Checkout schema
The checkout_schema field on a listing defines custom fields shown to the buyer on the product page before payment. Buyer responses are stored on the order as checkout_data.
Email is always collected — you don’t need to add it to the schema.
Adding fields
Pass checkout_schema when creating or updating a listing. Each field has a key, type, label, and required flag.
Field types
Address fields
The address type is special. It renders a full address form and stores the result as a structured ShippingAddress object on the order — not in checkout_data.
The order response after payment:
Reading checkout data
After payment, checkout_data is a dictionary keyed by the field key values you defined. Address fields are in shipping_address instead.
Limits
- Maximum 10 fields per listing.
keymust be unique within the schema.optionsis required forselecttype, ignored for others.addresstype: maximum 1 per schema.
Updating the schema
Update checkout_schema on an existing listing. The new schema replaces the old one entirely.
To remove all custom fields, set checkout_schema to null.
Next steps
- Selling physical products — address collection with external fulfillment.
- Dynamic fulfillment — use checkout data to generate content.
- Fulfillment modes — managed vs external.