KintsugiKintsugi

Create a customer

POST/customers

Create a customer in the resolved organization. Idempotent on externalId and source, and additionally on connectionId when you send one: sending the same values again returns the existing customer unchanged and responds 200 instead of creating a duplicate. The customer is not updated by this call; use PATCH /customers/{customerId} to update. Omitting connectionId matches an existing customer with that externalId and source whatever its connection. If the match is a customer you previously deleted, it is restored (not duplicated) so its transactions and exemptions stay attached to it. A new customer is always ACTIVE; delete one with DELETE.

Authorization

Api-KeystringRequired

Your secret API key. Include it with every request.

Headers

Api-Versiondate

Release date, as YYYY-MM-DD. Defaults to 2026-07-21.

Organization-Idstring

Target organization id (Organization-Id selector).

Connection-Idstring

Target connection id; resolves to its organization.

Entity-Idstring

Platform entity id; resolves to a connection's organization.

Entity-Sourcestring

Optional source to disambiguate an Entity-Id.

Body

externalIdstring

Your stable identifier for the customer, and the key creating is idempotent on. Sending one that already exists for the same source and connection returns that customer unchanged with 200 instead of creating a second one; use PATCH to update it.

namestring

Customer name.

companyNamestring

Registered or legal business name, when it differs from name.

emailstring

Contact email address.

phonestring

Contact phone number.

connectionIdstring

Connection to attribute the customer to. Must belong to the resolved organization. Part of the idempotency key.

externalFriendlyIdstring

Human-facing identifier from the source system, shown in place of externalId when the source has both.

sourcestring

Origin system of the customer (e.g. API, SHOPIFY). Defaults to OTHER. Must be a supported public source; unsupported values are rejected.

Available options:ACUMATICAAIRWALLEXAMAZONAPIAPPLE_APP_STOREBESTBUYBIGCOMMERCEBILL_COMBUNNYCAMPFIRECHARGEBEECHECKOUTCHAMPDEELDUALENTRYEBAYECWIDETSYFACEBOOKFAIREFRESHBOOKSGOOGLE_APP_STOREGOOGLE_EXPRESSGROUPONGUSTOHYPERLINEINSTAGRAMINTUIT_ENTERPRISE_SUITEKICKSTARTERKILL_BILLMACYSMAGENTOMAXIOMERCADO_LIBREMICROSOFT_DYNAMICS_365MODALYSTNETSUITENEWEGGNOCNOCNORDSTROMODOOOPENMETERORBORDWAYOTHERPAYPALPINTERESTPLENTYONEQUICKBOOKSRECURLYRILLETRIPPLINGSAGE-INTACCTSALESFORCESHOPIFYSHOPLINESHOPWARESQUARESPACESTRIPETARGETTIKTOKVERTEX_O_SERIESWALMARTWAYFAIRWISHWIXWOOCOMMERCEXEROZENSKARZOHOZUORA
taxRegistrationsCustomerTaxRegistrationWrite[]

Tax registrations to record for the customer, each keyed by (countryCode, taxType). Repeating a pair in one request is rejected.

street1string

First line of the street address. An empty string when none was supplied.

street2string

Second line of the street address. An empty string when none was supplied.

citystring

City or locality. An empty string when none was supplied.

countystring

County or district. An empty string when none was supplied.

statestring

State or province code, or null when none is on record.

postalCodestring

Postal or ZIP code. An empty string when none was supplied.

countrystring

Country code (ISO 3166-1 alpha-2), or null when none is on record.

Response

idstringRequired

Kintsugi's unique identifier for the customer.

organizationIdstringRequired

Organization the customer belongs to. Send it as the Organization-Id header to scope a write to this customer's organization.

externalIdstring

Your stable identifier for the customer. null when the source system supplied none.

externalFriendlyIdstring

Human-facing identifier from the source system. null when the source has only externalId.

namestring

Customer name.

companyNamestring

Registered or legal business name.

emailstring

Contact email address.

phonestring

Contact phone number.

statusPublicCustomerStatusEnumRequired

Customer status. Reads never return archived customers, so this is always ACTIVE.

Available options:ACTIVEARCHIVED
addressStatusPublicCustomerAddressStatusEnumRequired

How far address validation got for this customer. UNVERIFIED until validation has run; BLANK when there is no address to validate.

Available options:UNVERIFIEDINVALIDPARTIALLY_VERIFIEDVERIFIEDUNVERIFIABLEBLANK
registrationNumberstring

Business registration number, or null when Kintsugi has not captured one for this customer.

sourcestringRequired

Origin system of the customer (e.g. API, SHOPIFY). Any origin outside the published values is reported as OTHER.

Available options:ACUMATICAAIRWALLEXAMAZONAPIAPPLE_APP_STOREBESTBUYBIGCOMMERCEBILL_COMBUNNYCAMPFIRECHARGEBEECHECKOUTCHAMPDEELDUALENTRYEBAYECWIDETSYFACEBOOKFAIREFRESHBOOKSGOOGLE_APP_STOREGOOGLE_EXPRESSGROUPONGUSTOHYPERLINEINSTAGRAMINTUIT_ENTERPRISE_SUITEKICKSTARTERKILL_BILLMACYSMAGENTOMAXIOMERCADO_LIBREMICROSOFT_DYNAMICS_365MODALYSTNETSUITENEWEGGNOCNOCNORDSTROMODOOOPENMETERORBORDWAYOTHERPAYPALPINTERESTPLENTYONEQUICKBOOKSRECURLYRILLETRIPPLINGSAGE-INTACCTSALESFORCESHOPIFYSHOPLINESHOPWARESQUARESPACESTRIPETARGETTIKTOKVERTEX_O_SERIESWALMARTWAYFAIRWISHWIXWOOCOMMERCEXEROZENSKARZOHOZUORA
connectionIdstring

Connection that produced the customer. null when the customer was not produced by a connection (e.g. created through this API).

street1string

First line of the street address. An empty string when none was supplied.

street2string

Second line of the street address. An empty string when none was supplied.

citystring

City or locality. An empty string when none was supplied.

countystring

County or district. An empty string when none was supplied.

statestring

State or province code.

postalCodestring

Postal or ZIP code. An empty string when none was supplied.

countrystring

Country code, ISO 3166-1 alpha-2.

taxRegistrationsCustomerTaxRegistration[]

The customer's tax registrations. An empty list when there are none.

200

An existing customer matched on externalId, source and connectionId. It was returned unchanged (revived first if it had been deleted); no new customer was created.

201

Successful Response

400

The request was invalid.

401

Authentication failed or was missing.

403

The credential is not permitted for this request.

404

The requested resource was not found.

409

The request conflicts with existing state.

422

The request failed validation.

cURL
POST /customers
-H "Api-Key: ***"
-H "Api-Version: 2026-07-21"
{
"externalId": "cust-1001",
"name": "Acme Corp",
"companyName": "Acme Corp",
"email": "jane.doe@example.com",
"phone": "+1 415 555 0100",
"connectionId": "conn_2mNpQr7Ls8f3k",
"externalFriendlyId": "INV-1001",
"source": "API",
"taxRegistrations": [
{
"countryCode": "CA",
"taxType": "gst",
"taxId": "123456789RT0001"
}
],
"street1": "123 Main St",
"street2": "Suite 400",
"city": "San Francisco",
"county": "San Francisco County",
"state": "CA",
"postalCode": "94105",
"country": "US"
}
Response
{
"id": "cust_2mNpQr7Ls8f3k",
"organizationId": "orgn_2mNpQr7Ls8f3k",
"externalId": "cust-1001",
"externalFriendlyId": "INV-1001",
"name": "Acme Corp",
"companyName": "Acme Corp",
"email": "jane.doe@example.com",
"phone": "+1 415 555 0100",
"status": "ACTIVE",
"addressStatus": "UNVERIFIED",
"registrationNumber": "123456789",
"source": "API",
"connectionId": "conn_2mNpQr7Ls8f3k",
"street1": "123 Main St",
"street2": "Suite 400",
"city": "San Francisco",
"county": "San Francisco County",
"state": "CA",
"postalCode": "94105",
"country": "US",
"taxRegistrations": [
{
"id": "ctax_2mNpQr7Ls8f3k",
"countryCode": "CA",
"taxType": "gst",
"taxId": "123456789RT0001",
"isValid": false
}
]
}
Create a customer (2026-07-21) | Kintsugi API Reference