Skip to content
Hardcount
Run it locally
Pre-1.0 · one maintainer · Stripe and cards only · no SDKs (client libraries) yet · no production users yet. Docs describe v0.9.1 (29 Oct 2026) · What’s new →

The customer object

Field Type Always present What it means
id string Yes
external_id string Yes
display_name string Yes
email string No
additional_emails array of string No CC’d on billing documents and billing-state emails (invoice, receipt, dunning, payment failed, credit note) — never on credential-bearing emails (setup links, resets, invites). Normalized to lowercase bare addresses, deduped, capped at 10, never equal to the primary email. Stored encrypted at rest.
status enum Yes One of: active, archived.
created_at string (date-time) Yes
test_clock_id string No Test clock this customer is pinned to (test mode only). When set, the customer — and any invoices/subscriptions created for it — run on the clock’s simulated time. Empty for live customers. The dashboard reads it to show the “test clock” badge + simulated-time banner on the customer and its invoices.
tenant_id string No
email_status enum No Deliverability of email, learned from bounce and complaint reports. One of: unknown, ok, bounced, complained.
email_last_bounced_at string (date-time) No
email_bounce_reason string No
dunning_policy_id string No Assigned dunning policy; absent means the tenant default.
stripe_customer_id string No The Stripe customer. Absent until the first payment-method action.
livemode boolean No
updated_at string (date-time) Yes