Checkout

form[data-next-checkout] is the checkout: its fields are checked as the shopper types, kept in this tab, and sent with the order on submit. checkout.* reads what was entered, for a review step, and checkout.errors.<field> each field's message.

CODE
<form data-next-checkout data-next-go="upsell.html" data-next-lead="email">
  <input data-next-field="email" type="email" autocomplete="email" required />
  <p data-next-query="checkout.errors.email"></p>
  <div data-next-address="shipping"></div>
  <div data-next-payment></div>
  <p data-next-query="checkout.errors.payment"></p>
  <button>Pay</button>
</form>

Attributes

AttributeMeans
form[data-next-checkout]The checkout form
data-next-go="<url>"The page after a paid order, opened with ?ref_id and the visit's parameters. A declined payment returns here
data-next-lead="email|phone|email+phone|off"When the shopper is saved as a lead. Default email
data-next-stepA middle step of a multi-step checkout: submit checks the step and opens data-next-go

Its inputs are data-next-field; the address, payment and express parts are widgets.

Fields

FieldTypePresent
idstringalwaysOne checkout in this tab, the same across its steps, reloads and a return from a payment gateway; a new one after an order is paid. Empty until checkout.started.
stepnumberoptionalThe step of a multi-step checkout (data-next-checkout-step), from 1; none on a one-page checkout.
cartCartalwaysThe same cart cart.* events carry.
userUseroptionalThe shopper, from user.created on.
shipping_addressAddressoptionalFrom address.entered for the shipping address on.
billing_same_as_shippingbooleanoptionalOn a checkout page: false once the shopper asks for a separate billing address.
billing_addressAddressoptionalWhen billing_same_as_shipping is false, from address.entered for it on.
payment_methodstringoptionalThe API's code for the chosen payment method, on a checkout page: card_token, paypal, apple_pay, …

Cart

The cart every cart.* event carries. Prices are numbers in currency, there once the server priced these lines: total = subtotal − total_discount + shipping_method.price.

FieldTypePresent
linesCartItem[]alwaysEvery line in the cart, the same package's lines merged.
couponsstring[]alwaysThe codes the shopper applied, uppercase. A bundle card's own codes are not listed.
currencystringcampaignISO 4217, such as USD.
shipping_methodShippingMethodoptionalThe selected shipping method, and what shipping costs.
subtotalnumberpricedThe products before discounts, without shipping.
total_discountnumberpricedThe discounts on the products, without shipping's: the sum of discounts.
totalnumberpricedWhat the shopper pays.
discountsDiscount[]pricedThe discounts on the products, one per offer.
discount_percentagenumberpricedtotal_discount ÷ subtotal × 100, to two decimals; 0 without a discount.
quantitynumberalwaysUnits in the cart: each line's quantity.

User

The shopper, as the store's user on the Open Cart and the order.

FieldTypePresent
emailstringoptionalAs typed, trimmed; none when data-trigger-on created the user without one.
first_namestringalways
last_namestringalways
phonestringoptionalIn E.164 once the address service read it, else the digits typed.
accepts_marketingbooleanalwaysThe marketing checkbox, as sent with the Open Cart and the order.
languagestringalwaysThe language the store keeps for the shopper, such as en.
ipstringoptionalThe shopper's IP address, as the store recorded it with the Open Cart, else as the address service saw it; none when neither knows it.
user_agentstringalwaysAs the store recorded it with the Open Cart, else the browser's.

Address

A postal address as the shopper entered it, once every field its country requires is valid.

FieldTypePresent
first_namestringalways
last_namestringalways
line1stringalways
line2stringoptional
citystringoptionalNone in a country whose addresses have no city, such as Singapore.
statestringoptionalThe state or province code, in a country that has them.
postcodestringoptional
countrystringalwaysISO 3166-1 alpha-2.
phonestringoptionalIn E.164 once the address service read it, else the digits typed.

CartItem

A line of the cart. Its prices are there once the server priced the cart.

FieldTypePresent
package_idnumberalwaysThe package's ref_id in the campaign.
quantitynumberalwaysPackage quantity.
is_upsellbooleanoptionaltrue for a line added after the order.
propertiesRecord<string, string>optionalLine properties, such as a variant picked in a bundle slot.
product_idnumbercampaignThe product in the store.
product_titlestringcampaignThe product's name as customers see it, as on an order line; the package's name for a package without one.
variant_idnumbercampaignThe product variant, for a product with variants.
variant_titlestringcampaignThe variant's name, such as Black / M, for a product with variants.
skustringcampaignThe product's Stock Keeping Unit.
imagestringcampaignThe package's image URL.
pricenumberpricedWhat one package costs after discounts.
original_pricenumberpricedWhat one package costs before discounts; equal to price when nothing is taken off.
total_discountnumberpricedThe discount on the line.
totalnumberpricedprice × quantity.
subtotalnumberpricedThe line before discounts: total = subtotal − total_discount.
discount_percentagenumberpricedtotal_discount ÷ subtotal × 100, to two decimals; 0 without a discount.
discountsDiscount[]pricedThe discounts on the line.
subscriptionSubscriptioncampaignFor a package billed again every interval.

ShippingMethod

The selected shipping method, and what shipping costs.

FieldTypePresent
idnumberalwaysThe method's ref_id.
codestringcampaignSuch as standard.
namestringpricedThe method's name.
pricenumberpricedWhat shipping costs after discounts; 0 is free shipping.
original_pricenumberpricedWhat shipping costs before discounts.
discountsDiscount[]pricedThe discounts on shipping, such as a free-shipping offer.

Discount

A discount on the cart's products or on its shipping. Amounts are in the cart's currency.

FieldTypePresent
namestringalwaysThe offer's name.
amountnumberalwaysThe amount taken off.
source"offer" | "coupon"alwayscoupon for a code the shopper entered (it is in coupons); offer for an automatic offer or a bundle card's own code.
codestringoptionalThe code, for a coupon.
offer_idnumberalwaysThe offer that gave it.
percentagenumberoptionalThe percentage the offer is set to take off, as the API reports it, such as 20. Its configured value, for a label such as “20% off”; the amount actually taken off is amount.

Subscription

A package billed again every interval.

FieldTypePresent
interval"day" | "month"alwaysThe unit of the renewal interval.
interval_countnumberalwaysHow many intervals between renewals.
pricenumberpricedWhat each renewal charges, after discounts.
original_pricenumberpricedWhat each renewal charges before discounts.
FieldIs
checkout.errors.<field>The message of a field the checkout refused; payment for the payment