Skip to main content
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.
Unsupported product types — The following cannot be used to initiate a checkout through the API:
  • Service products
  • Coaching products
  • Products with pay-what-you-want pricing
For these, redirect customers to your Chariow storefront or use the Snap Widget embed on your website.
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:
For blocked product types, if a customer’s access has been revoked (e.g., after a refund), they will be able to purchase the product again. The system checks for active access grants only.

Authentication

This endpoint requires API key authentication via Bearer token:

Request Body

string
required
The product public ID or slug to purchase. Example: prd_abc123xyz or premium-course
string
required
Customer email address. Must be a valid email (max 255 characters). Example: customer@example.com
string
required
Customer first name (max 50 characters). Example: John
string
required
Customer last name (max 50 characters). Example: Doe
object
required
Customer phone details
string
Discount code to apply (max 100 characters). Example: SAVE20
string
Campaign public ID or tracking code for analytics. Example: camp_xyz789
object
Custom field values for the product (key-value pairs). Must match the product’s configured custom fields.
string
Currency code for payment (ISO 4217). Defaults to store currency if not provided. Example: USD, EUR, GBP
string
Custom 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-you
object
Custom 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"}
string
The buyer’s IP address, IPv4 or IPv6. Example: 203.0.113.42
Why send customer_ip? This endpoint is called from your server, so the IP we see is your own infrastructure, not the buyer’s. When you forward customer_ip, we store it on the sale and resolve the buyer’s country from it, which improves the payment methods offered at checkout and the accuracy of your sales analytics. When the field is omitted, nothing breaks: we simply fall back to the calling IP.

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.
string
Customer street address for shipping (max 255 characters). Example: 123 Main Street
string
Customer city for shipping (max 100 characters). Example: New York
string
Customer state or region for shipping (max 100 characters). Example: NY
string
Customer country for shipping (ISO 3166-1 alpha-2 code, max 2 characters). Example: US
string
Customer postal/ZIP code for shipping (max 20 characters). Example: 10001

Response

object
The checkout response object containing step, purchase, and payment information

Error Responses

Invalid or missing API key
Product not found or not published
Validation errors, pay-what-you-want product, or unsupported product type (Service, Coaching)