Navigation

Create Billing Customer

Create a unified payment identity for invoices, subscriptions, and trigger billing

POST /public/edge/createCustomer

Creates a new billing customer record linking a CRM contact to a payment gateway. If a billing customer already exists for this contact and organization, returns the existing record with `existing: true`.

Requires a valid `api_key` in the JSON request body

Parameters

Name In Type Required Description
api_key body string Yes Your Zyntro API key
org_id body string Yes Your organization UUID
brand_id body string Yes Your brand ID
contact_id body string Yes The CRM contact UUID to create a billing customer for
gateway body string No Payment gateway: `stripe` or `paypal`. Default: `stripe`.
payment_data body object No Gateway-specific payment method data. Default: null.
allow_trigger body integer No Whether trigger billing is allowed for this customer. `1` = yes, `0` = no. Default: `0`.
require_initial body integer No Whether an initial verification charge is required. `1` = yes, `0` = no. Default: `1`.
initial_amount body float No Initial verification charge amount. Default: `15.00`. Minimum set by Edge settings.
notes body string No Internal notes about this billing customer.
meta body object No Custom metadata stored on the billing customer record.

Code Samples

bash
curl -X POST https://app.zyntrohq.com/apis/public/edge/createCustomer.php \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "your_api_key",
    "org_id": "org_xxx",
    "brand_id": "1",
    "contact_id": "cont_xxx",
    "gateway": "stripe",
    "allow_trigger": 1
  }'

Response

200 Customer created or existing returned
json
{
    "data": {
        "bc_dt": "2026-03-30 10:22:00",
        "bc_id": "bc_xxx",
        "bc_orgid": "org_xxx",
        "bc_contid": "cont_xxx",
        "bc_status": "active",
        "bc_gateway": "stripe",
        "bc_allow_trigger": 1,
        "bc_initial_charged": 1
    },
    "status": "success",
    "existing": false,
    "billing_customer_id": "bc_xxx"
}
Info: If a billing customer already exists for this contact + org, the existing record is returned with `existing: true`. This provides built-in idempotency.

Was this article helpful?

NotebookLM Overviews