When creating an Express Checkout order, there are two key differences – you must specify the mode as express and set a single popupOriginUrl instead of redirectConfirmUrl and redirectCancelUrl. Unlike standard checkout, only amount, merchant, and mode are required for the Create Checkout API call:

The Data Payload Properties:

amountMoney (required)Total amount to be charged to the consumer, excluding shipping and taxes. This can be dynamically updated during the checkout by setting mode to express
modeString (default standard)Set to express for an express-flow checkout. This allows the amount to adjust
based on events during the checkout, such as shipping costs and sales tax based on a selected address
You must provide a new URL, popupOriginUrl, to receive Javascript callbacks from Afterpay (e.g. onComplete, onShippingAddressChange, etc). Include the scheme, hostname and port. Port is optional.
items, discounts, shipping, merchantReference(optional)Optional fields as per the API reference docs.
curl --request POST \
  --url https://api.us.afterpay.com/v2/checkouts \
  --header 'accept: application/json' \
  --header 'content-type: application/json' \
  --data '{"amount":{"amount":"100.00", “currency”: “USD”}, “mode”: “express”, "merchant": {"popupOriginUrl": "https://example.com/cart"}}'


The amount provided in this call should be the order amount before shipping and taxes.