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_birth appears only when the key has customer_dob:read.
  • source is where the record started: pos, bigcommerce or api.
  • 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.