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
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | number | No | Maximum number of records to return. |
Response
Status: 200 OK
{
"result": {
"count": 2,
"list": [
{
"id": "cus_123",
"name": "Acme Corp",
"email": "[email protected]",
"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": "[email protected]",
"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": "[email protected]",
"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": "[email protected]",
"created_date": "2025-10-01T00:00:00Z",
"country": "US",
"data_source": "xxxx-aaaa-bbb"
},
{
"id": "cus_789",
"name": "Gamma Inc",
"email": "[email protected]",
"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": "[email protected]",
"custom_variables": {
"owner": "John",
"channel": "paid-ads"
}
}Response
Status: 200 OK
{
"success": true,
"result": {
"id": "cus_456",
"name": "Beta LLC Updated",
"email": "[email protected]",
"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"
}