API docs
Customers
Permission: customers (read / write). customer_dob adds dates of birth.
{
"object": "customer",
"id": 1166,
"first_name": "Jordan",
"middle_name": null,
"last_name": "Reyes",
"company": null,
"email": "jordan.reyes@example.com",
"phone": "(330) 555-0199",
"phone_alt": null,
"address": { "line1": "3400 Kent Rd", "line2": null, "city": "Stow", "state": "OH", "postal_code": "44224", "country": "US" },
"marketing_opt_in": true,
"tax_exempt": false,
"is_ffl": false,
"customer_group_id": 3,
"tags": ["ccw-class"],
"store_credit_cents": 2500,
"lifetime_spend_cents": 184300,
"sale_count": 7,
"last_purchase_at": "2026-09-20T19:44:02Z",
"source": "pos",
"bigcommerce_customer_id": 4412,
"created_at": "2026-02-11T16:20:00Z",
"updated_at": "2026-09-24T12:00:00Z",
"date_of_birth": "1985-04-12"
}
date_of_birthappears only when the key hascustomer_dob:read.sourceis where the record started:pos,bigcommerceorapi.- Never included: ID documents, staff notes, FFL and tax-exemption certificate numbers.
List
GET /v1/customers
| Filter | |
|---|---|
email |
Exact (case-insensitive) |
phone |
Digits compared, so any formatting works |
bigcommerce_customer_id |
Exact |
marketing_opt_in |
true / false. Handy for an email tool. |
q |
Name, email prefix or company |
updated_since, limit, cursor |
curl "https://app.ironregister.com/api/v1/customers?marketing_opt_in=true&updated_since=2026-09-01T00:00:00Z&limit=200" \
-H "Authorization: Bearer $KEY"
Get
GET /v1/customers/{id}
Create
POST /v1/customers (write). Requires first_name and last_name.
Optional fields: middle_name, company, email, phone, phone_alt, address{line1,line2,city,state,postal_code,country}, marketing_opt_in, tax_exempt, date_of_birth. Setting date_of_birth requires customer_dob:read, otherwise the request fails with 403 INSUFFICIENT_SCOPE.
If a customer with the same email already exists, you get 409 DUPLICATE_CUSTOMER with details.existing_id. Send "allow_duplicate_email": true to create the customer anyway.
curl -X POST https://app.ironregister.com/api/v1/customers \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{ "first_name": "Jordan", "last_name": "Reyes", "email": "jordan.reyes@example.com", "phone": "330-555-0199",
"address": { "line1": "3400 Kent Rd", "city": "Stow", "state": "OH", "postal_code": "44224", "country": "US" },
"marketing_opt_in": true }'
Update
PATCH /v1/customers/{id} (write). Same fields as create, and only what you send changes. There is no delete through the API.