# 

## Prerequisites

* A valid API key for the client account — see [Obtain API credentials](/docs/how-tos/setup/obtain-credentials)
* Processor credentials provided by the host processor (for example, TSYS merchant ID or Vericheck business details)


## How integrations work

An integration links a client account to a third-party processor. Once created, the client can route transactions through that processor.

How integrations work
## Supported processors

| Processor | Object type | Payment types |
|  --- | --- | --- |
| **TSYS** | `processor_account` | Credit/debit card transactions |
| **Vericheck** | `vericheck` | ACH payments and payouts |


## Option A: Add a TSYS integration

Send `POST /v1/integrations` with the TSYS-specific fields.

### Key fields

| Field | Required | Description |
|  --- | --- | --- |
| `general_details.is_active` | No | Whether the integration is active (default `true`) |
| `general_details.mid` | Yes | TSYS merchant ID |
| `general_details.card_brand` | Yes | Primary card brand (`visa`, `mastercard`, `american_express`, `discover`, etc.) |
| `general_details.industry_type` | Yes | Industry type for the merchant |
| `general_details.bin` | Yes | BIN number assigned by the processor |
| `general_details.url` | Yes | TSYS host URL for transaction processing |
| `general_details.settlement_time` | No | Time at which daily settlement occurs |
| `agent_details` | No | Agent/ISO details if applicable |
| `metadata` | No | Up to 50 key-value pairs for custom data |


curl
```shell
curl -X POST \
  https://api.dev.paradisegateway.net/v1/integrations \
  -H "Content-Type: application/json" \
  -H "APIKEY: CLIENT-API-KEY" \
  -d '{
    "general_details": {
      "is_active": true,
      "mid": "999000000011",
      "card_brand": "visa",
      "industry_type": "retail",
      "bin": "999995",
      "url": "https://example.tsyshost.com",
      "settlement_time": "2026-01-01T22:00:00Z"
    },
    "metadata": {
      "internal_ref": "tsys-primary"
    }
  }'
```

Python
```python
import requests

resp = requests.post(
    "https://api.dev.paradisegateway.net/v1/integrations",
    headers={"Content-Type": "application/json", "APIKEY": "CLIENT-API-KEY"},
    json={
        "general_details": {
            "is_active": True,
            "mid": "999000000011",
            "card_brand": "visa",
            "industry_type": "retail",
            "bin": "999995",
            "url": "https://example.tsyshost.com",
            "settlement_time": "2026-01-01T22:00:00Z",
        },
        "metadata": {"internal_ref": "tsys-primary"},
    },
)
print(resp.json())
```

JavaScript
```javascript
const resp = await fetch(
  "https://api.dev.paradisegateway.net/v1/integrations",
  {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "APIKEY": "CLIENT-API-KEY",
    },
    body: JSON.stringify({
      general_details: {
        is_active: true,
        mid: "999000000011",
        card_brand: "visa",
        industry_type: "retail",
        bin: "999995",
        url: "https://example.tsyshost.com",
        settlement_time: "2026-01-01T22:00:00Z",
      },
      metadata: { internal_ref: "tsys-primary" },
    }),
  }
);
console.log(await resp.json());
```

C#
```csharp
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("APIKEY", "CLIENT-API-KEY");

var payload = new
{
    general_details = new
    {
        is_active = true, mid = "999000000011",
        card_brand = "visa", industry_type = "retail",
        bin = "999995", url = "https://example.tsyshost.com",
        settlement_time = "2026-01-01T22:00:00Z",
    },
    metadata = new { internal_ref = "tsys-primary" }
};
var resp = await client.PostAsJsonAsync(
    "https://api.dev.paradisegateway.net/v1/integrations", payload);
Console.WriteLine(await resp.Content.ReadAsStringAsync());
```

Java
```java
HttpClient client = HttpClient.newHttpClient();
String body = """
    {
      "general_details": {
        "is_active": true,
        "mid": "999000000011",
        "card_brand": "visa",
        "industry_type": "retail",
        "bin": "999995",
        "url": "https://example.tsyshost.com",
        "settlement_time": "2026-01-01T22:00:00Z"
      },
      "metadata": { "internal_ref": "tsys-primary" }
    }
    """;
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.dev.paradisegateway.net/v1/integrations"))
    .header("Content-Type", "application/json")
    .header("APIKEY", "CLIENT-API-KEY")
    .POST(HttpRequest.BodyPublishers.ofString(body)).build();
HttpResponse<String> resp = client.send(request,
    HttpResponse.BodyHandlers.ofString());
System.out.println(resp.body());
```

Go
```go
payload := strings.NewReader(`{
  "general_details": {
    "is_active": true,
    "mid": "999000000011",
    "card_brand": "visa",
    "industry_type": "retail",
    "bin": "999995",
    "url": "https://example.tsyshost.com",
    "settlement_time": "2026-01-01T22:00:00Z"
  },
  "metadata": { "internal_ref": "tsys-primary" }
}`)
req, _ := http.NewRequest("POST",
    "https://api.dev.paradisegateway.net/v1/integrations", payload)
req.Header.Set("Content-Type", "application/json")
req.Header.Set("APIKEY", "CLIENT-API-KEY")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
```

PHP
```php
$ch = curl_init("https://api.dev.paradisegateway.net/v1/integrations");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => ["Content-Type: application/json", "APIKEY: CLIENT-API-KEY"],
    CURLOPT_POSTFIELDS => json_encode([
        "general_details" => [
            "is_active" => true, "mid" => "999000000011",
            "card_brand" => "visa", "industry_type" => "retail",
            "bin" => "999995", "url" => "https://example.tsyshost.com",
            "settlement_time" => "2026-01-01T22:00:00Z",
        ],
        "metadata" => ["internal_ref" => "tsys-primary"],
    ]),
]);
echo curl_exec($ch); curl_close($ch);
```

Ruby
```ruby
require "net/http"; require "json"
uri = URI("https://api.dev.paradisegateway.net/v1/integrations")
req = Net::HTTP::Post.new(uri, {
  "Content-Type" => "application/json", "APIKEY" => "CLIENT-API-KEY",
})
req.body = {
  general_details: {
    is_active: true, mid: "999000000011", card_brand: "visa",
    industry_type: "retail", bin: "999995",
    url: "https://example.tsyshost.com",
    settlement_time: "2026-01-01T22:00:00Z",
  },
  metadata: { internal_ref: "tsys-primary" },
}.to_json
resp = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
puts resp.body
```

### Response

A `200` response returns the new integration with its system-assigned `id`.

```json
{
  "id": "proc_3MtwBwLkdIwHu7ix28a3tqPa",
  "object": "processor_account",
  "general_details": {
    "is_active": true,
    "mid": "999000000011",
    "card_brand": "visa",
    "industry_type": "retail",
    "bin": "999995",
    "url": "https://example.tsyshost.com",
    "settlement_time": "2026-01-01T22:00:00Z"
  },
  "metadata": {
    "internal_ref": "tsys-primary"
  },
  "correlation_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
```

Save the `id` — you need it to update or deactivate the integration later.

## Option B: Add a Vericheck integration

Send `POST /v1/integrations` with the Vericheck-specific fields.

### Key fields in Vericheck integration

| Field | Required | Description |
|  --- | --- | --- |
| `business_name` | Yes | Legal name of the business |
| `doing_business_as` | No | DBA / trade name |
| `website_url` | No | Business website URL |
| `addresses` | Yes | Business address details |
| `addresses.address_line_1` | Yes | Street address |
| `addresses.city` | Yes | City |
| `addresses.state` | Yes | State |
| `addresses.zip` | Yes | ZIP code |


```shell
curl -X POST \
  https://api.dev.paradisegateway.net/v1/integrations \
  -H "Content-Type: application/json" \
  -H "APIKEY: CLIENT-API-KEY" \
  -d '{
    "business_name": "Starfleet Exchange",
    "doing_business_as": "Starfleet Exchange",
    "website_url": "https://www.starfleet.ufp.gov",
    "addresses": {
      "nickname": "HQ",
      "address_line_1": "1701 Enterprise Blvd",
      "city": "San Francisco",
      "state": "CA",
      "zip": "94102"
    }
  }'
```

### Response in Vericheck integration

```json
{
  "id": "INTEGRATION-01KFDKXMQ637EKEAY410MSQSXB",
  "object": "vericheck",
  "business_name": "Starfleet Exchange",
  "doing_business_as": "Starfleet Exchange",
  "website_url": "https://www.starfleet.ufp.gov",
  "addresses": {
    "nickname": "HQ",
    "address_line_1": "1701 Enterprise Blvd",
    "city": "San Francisco",
    "state": "CA",
    "zip": "94102"
  },
  "correlation_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901"
}
```

## Verify the integration

List all integrations to confirm:

```shell
curl https://api.dev.paradisegateway.net/v1/integrations \
  -H "APIKEY: CLIENT-API-KEY"
```

## Next steps

* [Update processor credentials](/docs/how-tos/integrations/update-integration)
* [About supported processors](/docs/get-started/supported-processors)
* [Process a credit card sale](/docs/how-tos/process-payments/process-credit-card)
* [Process an ACH payment](/docs/how-tos/process-payments/process-ach-payment)