# 

## Prerequisites

* An existing reseller account with admin credentials (resellers create child accounts)
* A valid API key with admin permissions — see [Obtain API credentials](/docs/how-tos/setup/obtain-credentials)


## Step 1: Prepare account details

Gather the following information for the new client.

| Field | Required | Description | Example |
|  --- | --- | --- | --- |
| `dba` | Yes | Business name (doing-business-as) | `Acme Jewelry` |
| `parent_id` | Yes | Your reseller client ID | `CLIENT-01JMRSPCK7XVNP3KS8F2W4T6Y` |
| `type` | Yes | `merchant` or `reseller` | `merchant` |
| `admin_contact_details.first_name` | Yes | Admin's first name | `John` |
| `admin_contact_details.last_name` | Yes | Admin's last name | `Doe` |
| `admin_contact_details.email` | Yes | Admin's email address | `john.doe@example.com` |
| `admin_contact_details.phone` | Yes | Admin's phone number | `+15551234567` |
| `admin_contact_details.time_zone` | Yes | Time zone | `America/New_York` |


Supported time zones: `America/Los_Angeles`, `America/Phoenix`, `America/Denver`, `America/Chicago`, `America/New_York`, `Pacific/Honolulu`, `America/Anchorage`.

## Step 2: Create the client

Send a `POST` request to `/v1/clients`.

curl
```shell
curl -X POST \
  https://api.dev.paradisegateway.net/v1/clients \
  -H "Content-Type: application/json" \
  -H "APIKEY: YOUR-API-KEY" \
  -d '{
    "dba": "Acme Jewelry",
    "parent_id": "CLIENT-01JMRSPCK7XVNP3KS8F2W4T6Y",
    "type": "merchant",
    "admin_contact_details": {
      "first_name": "John",
      "last_name": "Doe",
      "email": "john.doe@example.com",
      "phone": "+15551234567",
      "time_zone": "America/New_York"
    }
  }'
```

Python
```python
import requests

resp = requests.post(
    "https://api.dev.paradisegateway.net/v1/clients",
    headers={
        "Content-Type": "application/json",
        "APIKEY": "YOUR-API-KEY",
    },
    json={
        "dba": "Acme Jewelry",
        "parent_id": "CLIENT-01JMRSPCK7XVNP3KS8F2W4T6Y",
        "type": "merchant",
        "admin_contact_details": {
            "first_name": "John",
            "last_name": "Doe",
            "email": "john.doe@example.com",
            "phone": "+15551234567",
            "time_zone": "America/New_York",
        },
    },
)
print(resp.json())
```

JavaScript
```javascript
const resp = await fetch(
  "https://api.dev.paradisegateway.net/v1/clients",
  {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "APIKEY": "YOUR-API-KEY",
    },
    body: JSON.stringify({
      dba: "Acme Jewelry",
      parent_id: "CLIENT-01JMRSPCK7XVNP3KS8F2W4T6Y",
      type: "merchant",
      admin_contact_details: {
        first_name: "John",
        last_name: "Doe",
        email: "john.doe@example.com",
        phone: "+15551234567",
        time_zone: "America/New_York",
      },
    }),
  }
);
console.log(await resp.json());
```

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

var payload = new
{
    dba = "Acme Jewelry",
    parent_id = "CLIENT-01JMRSPCK7XVNP3KS8F2W4T6Y",
    type = "merchant",
    admin_contact_details = new
    {
        first_name = "John",
        last_name = "Doe",
        email = "john.doe@example.com",
        phone = "+15551234567",
        time_zone = "America/New_York"
    }
};

var resp = await client.PostAsJsonAsync(
    "https://api.dev.paradisegateway.net/v1/clients", payload);
Console.WriteLine(await resp.Content.ReadAsStringAsync());
```

Java
```java
HttpClient client = HttpClient.newHttpClient();
String body = """
    {
      "dba": "Acme Jewelry",
      "parent_id": "CLIENT-01JMRSPCK7XVNP3KS8F2W4T6Y",
      "type": "merchant",
      "admin_contact_details": {
        "first_name": "John",
        "last_name": "Doe",
        "email": "john.doe@example.com",
        "phone": "+15551234567",
        "time_zone": "America/New_York"
      }
    }
    """;
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.dev.paradisegateway.net/v1/clients"))
    .header("Content-Type", "application/json")
    .header("APIKEY", "YOUR-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(`{
  "dba": "Acme Jewelry",
  "parent_id": "CLIENT-01JMRSPCK7XVNP3KS8F2W4T6Y",
  "type": "merchant",
  "admin_contact_details": {
    "first_name": "John",
    "last_name": "Doe",
    "email": "john.doe@example.com",
    "phone": "+15551234567",
    "time_zone": "America/New_York"
  }
}`)
req, _ := http.NewRequest("POST",
    "https://api.dev.paradisegateway.net/v1/clients", payload)
req.Header.Set("Content-Type", "application/json")
req.Header.Set("APIKEY", "YOUR-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/clients");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
        "Content-Type: application/json",
        "APIKEY: YOUR-API-KEY",
    ],
    CURLOPT_POSTFIELDS => json_encode([
        "dba" => "Acme Jewelry",
        "parent_id" => "CLIENT-01JMRSPCK7XVNP3KS8F2W4T6Y",
        "type" => "merchant",
        "admin_contact_details" => [
            "first_name" => "John",
            "last_name" => "Doe",
            "email" => "john.doe@example.com",
            "phone" => "+15551234567",
            "time_zone" => "America/New_York",
        ],
    ]),
]);
echo curl_exec($ch);
curl_close($ch);
```

Ruby
```ruby
require "net/http"
require "json"

uri = URI("https://api.dev.paradisegateway.net/v1/clients")
req = Net::HTTP::Post.new(uri, {
  "Content-Type" => "application/json",
  "APIKEY" => "YOUR-API-KEY",
})
req.body = {
  dba: "Acme Jewelry",
  parent_id: "CLIENT-01JMRSPCK7XVNP3KS8F2W4T6Y",
  type: "merchant",
  admin_contact_details: {
    first_name: "John",
    last_name: "Doe",
    email: "john.doe@example.com",
    phone: "+15551234567",
    time_zone: "America/New_York",
  },
}.to_json
resp = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
puts resp.body
```

## Step 3: Verify the response

A successful request returns a `200` response with the new client object.

```json
{
  "id": "CLIENT-04MQACMEJWLRY8NP3KS2W6X9Z",
  "object": "client",
  "parent_id": "CLIENT-01JMRSPCK7XVNP3KS8F2W4T6Y",
  "dba": "Acme Jewelry",
  "type": "merchant",
  "admin_contact_details": {
    "first_name": "John",
    "last_name": "Doe",
    "email": "john.doe@example.com",
    "phone": "+15551234567",
    "time_zone": "America/New_York"
  },
  "correlation_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
```

Save the `id` value — you need it for creating users, integrations, and API keys under this client.

## Step 4: Create a processor integration

Before the new merchant can process transactions, connect it to a payment processor with `POST /v1/integrations`.

For more information, see [Supported processors](/docs/get-started/supported-processors).

## Step 5: Create an admin user

Create a user account for the new client so someone can log in and manage it. See [Obtain API credentials](/docs/how-tos/setup/obtain-credentials) for details on creating users and retrieving API keys.

## Next steps

* [Obtain API credentials](/docs/how-tos/setup/obtain-credentials) — generate API keys for the new account
* [Set up a sandbox environment](/docs/how-tos/setup/setup-sandbox-env) — configure test credentials
* [About clients and resellers](/docs/concepts/account-hierarchy/clients-and-resellers) — understand the account hierarchy