Customers


The /data/customers endpoint provides full CRUD operations for raw customer records. This endpoint focuses on the raw fields of customers (name, email, country, currency, status, trial and paid dates) and is intended for import/export and bulk operations, not derived metrics like MRR or subscription status.


List customers

Retrieve all customer records for the authenticated account.

Request


GET /data/customers

Query parameters

ParameterTypeRequiredDescription
limitnumberNoMaximum number of records to return.

Response

Status: 200 OK

{
"result": {
"count": 2,
"list": [
{
"id": "cus_123",
"name": "Acme Corp",
"email": "admin@acme.com",
"created_date": "2025-10-01T12:00:00.000Z",
"country": "US",
"trial_started": "2025-09-01T12:00:00.000Z",
"paid_started": "2025-09-15T12:00:00.000Z",
"cancel_date": null,
"status": "active",
"currency": "USD",
"data_source": "xxxx-aaaa-bbb"
}
]
}
}

Retrieve single customer

GET /data/customers/{id}

Response

{
"id": "cus_456",
"name": "Beta LLC",
"email": "contact@beta.com",
"country": "US",
"currency": "usd",
"status": "active",
"trial_started": "2025-10-01T00:00:00Z",
"paid_started": "2025-10-15T00:00:00Z",
"cancel_date": null,
"created_date": "2025-10-01T12:00:00.000Z",
"trial_end_date": "2025-04-08T20:52:41.000Z",
"overdue_date": null,
"custom_variables": {
"owner": "Matt",
"channel": "google-ads"
},
"status": "active",
"data_source": "xxxbbbaa-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"cancel_reason": null,
"current_mrr": {
"usd": 4900
}
}

Create customer + bulk insert

Create one or multiple customer records. To bulk insert, provide an array of customer objects in the request body.

Request

POST /data/customers
Content-Type: application/json

Body (single)

{
"id": "cus_456",
"name": "Beta LLC",
"email": "contact@beta.com",
"created_date": "2025-10-01T00:00:00Z",
"country": "US",
"trial_started": "2025-10-01T00:00:00Z",
"data_source": "xxxx-aaaa-bbb"
}

Body (bulk)

[
{
"id": "cus_456",
"name": "Beta LLC",
"email": "contact@beta.com",
"created_date": "2025-10-01T00:00:00Z",
"country": "US",
"data_source": "xxxx-aaaa-bbb"
},
{
"id": "cus_789",
"name": "Gamma Inc",
"email": "hello@gamma.com",
"created_date": "2025-10-01T00:00:00Z",
"country": "GB",
"trial_started": "2025-10-01T00:00:00Z",
"data_source": "xxxx-aaaa-bbb"
}
]

Response

Status: 201 Created

{
"result": {
"count": 2,
"list": [
{ "id": "cus_456" },
{ "id": "cus_789" }
]
}
}

Update customer

Update an existing customer by ID. Only the fields included will be updated, the rest will be kept as they are.

The custom_variables object works the same way, and will be merged with the existing ones (the new ones taking precedence).

PUT /data/customers/{id}
Content-Type: application/json

Body

{
"name": "Beta LLC Updated",
"email": "contact-new@beta.com",
"custom_variables": {
"owner": "John",
"channel": "paid-ads"
}
}

Response

Status: 200 OK

{
"success": true,
"result": {
"id": "cus_456",
"name": "Beta LLC Updated",
"email": "contact-new@beta.com",
"country": "US",
"currency": "usd",
"status": "active",
"trial_started": "2025-10-01T00:00:00Z",
"paid_started": "2025-10-15T00:00:00Z",
"cancel_date": null,
"created_date": "2025-10-01T12:00:00.000Z",
"trial_end_date": "2025-04-08T20:52:41.000Z",
"overdue_date": null,
"custom_variables": {
"owner": "Matt",
"channel": "google-ads",
"billing-id": "dcksdfkjn34"
},
"status": "active",
"data_source": "xxxbbbaa-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"cancel_reason": null,
"current_mrr": {
"usd": 4900
}
}
}

Delete customer

Delete a customer by ID.

DELETE /data/customers/{id}

Response

Status: 200 OK

{
"success": true,
"id": "cus_456"
}