Checkout
Initiate Checkout
Create a new checkout session for a product purchase
Initiates a new checkout session for purchasing a product. Creates a sale record and either returns a payment checkout URL for paid products or completes the sale immediately for free products.
All sales initiated via this API endpoint will have their Channel set to “API” on your store dashboard. This helps you identify and track sales originating from your API integrations separately from other channels.
Repeat Purchases
The ability to purchase a product multiple times depends on the product type:| Product Type | Repeat Purchase | Behaviour |
|---|---|---|
| License | Always allowed | Customers can purchase license products multiple times. Each purchase generates a new unique license key. |
| Downloadable | Blocked | Returns already_purchased if customer has an active access grant. |
| Course | Blocked | Returns already_purchased if customer has an active access grant. |
| Bundle | Blocked | Returns already_purchased if customer has an active access grant. |
Authentication
This endpoint requires API key authentication via Bearer token:Request Body
The product public ID or slug to purchase. Example:
prd_abc123xyz or premium-courseCustomer email address. Must be a valid email (max 255 characters). Example:
customer@example.comCustomer first name (max 50 characters). Example:
JohnCustomer last name (max 50 characters). Example:
DoeCustomer phone details
Discount code to apply (max 100 characters). Example:
SAVE20Campaign public ID or tracking code for analytics. Example:
camp_xyz789Custom field values for the product (key-value pairs). Must match the product’s configured custom fields.
Currency code for payment (ISO 4217). Defaults to store currency if not provided. Example:
USD, EUR, GBPCustom URL to redirect customers after payment completion (max 2048 characters). When provided, customers will be redirected to this URL instead of the default Chariow post-purchase page. Must be a valid active URL. Example:
https://yoursite.com/thank-youCustom key-value metadata to store with the sale. Maximum 10 keys allowed, each value limited to 255 characters. This metadata is included in Pulse webhook payloads, making it useful for linking sales with external systems. Example:
{"order_ref": "ORD-123", "source": "landing_page"}Shipping Address Fields
The following fields are required when the product has “Require shipping address” enabled. If shipping is not required for the product, these fields are ignored.
Customer street address for shipping (max 255 characters). Example:
123 Main StreetCustomer city for shipping (max 100 characters). Example:
New YorkCustomer state or region for shipping (max 100 characters). Example:
NYCustomer country for shipping (ISO 3166-1 alpha-2 code, max 2 characters). Example:
USCustomer postal/ZIP code for shipping (max 20 characters). Example:
10001Response
The checkout response object containing step, purchase, and payment information
Error Responses
401 Unauthorised
Invalid or missing API key
404 Not Found
Product not found or not published
422 Unprocessable Entity
Validation errors, pay-what-you-want product, or unsupported product type (Service, Coaching)