$kit->customers->create()storage adapter is configured, the normalized record is persisted via saveCustomer() immediately after creation.| Field | Type | Required | Description |
|---|---|---|---|
email | string | Yes | Must be a valid email address, or a ValidationError is thrown. |
name | string | No | Customer's full name or business name. |
phone | string | No | Phone number. |
description | string | No | Internal description shown in the Stripe Dashboard. |
address | array | No | line1, line2, city, state, postalCode, country. |
taxId | string | No | If provided, registered as an eu_vat tax ID on the customer. |
metadata | array<string,string> | No | Merged with StripeKit's own source: "stripekit" metadata entry. |
userId | string|int | No | Your own internal user ID, stored on the returned record (not sent to Stripe). |
| Exception | When |
|---|---|
ValidationError | email is missing or not a valid address. |
StripeOperationError | Stripe rejects the request, for example a duplicate tax ID or an invalid country code. |
source: "stripekit" into the customer's metadata on Stripe's side, in addition to anything you pass yourself, so you can identify StripeKit-created objects in the Stripe Dashboard.taxId currently always registers as eu_vat. For other tax ID types, create the customer with StripeKit and add the tax ID afterwards using the underlying Stripe client via $kit->raw.