Skip to content
Status

Express Checkout

Express Checkout puts a payment provider’s own checkout buttons, such as PayPal, on your product or basket page. The customer signs in with the provider, approves a payment or a payment method, and can pick a shipping address the provider holds for them, without filling in your forms. It is meant for guest customers: a customer who is already logged in to your platform is better served by Checkout.

Express Checkout is delivered by shuttle.js 1.3 or later. The script and the API call it authenticate (Shuttle.authenticate, and the AUTHENTICATE features on a gateway), and older pages call it Authenticate.

  1. You load shuttle.js with your shared key and the merchant’s instance key in the URL. Shuttle builds that script for the merchant, with the express checkout code of each connected payment provider that supports it.
  2. You tell shuttle.js which element to use. It renders each supporting provider’s buttons there, one under another. If none of the merchant’s providers supports Express Checkout, nothing is rendered.
  3. The customer completes the provider’s flow, and shuttle.js calls your on_success function with the customer’s details, the shipping address if you asked for one, and a gateway_data object.
  4. Your server passes gateway_data to the Payments API or the Payment Methods API. Until it does, no money moves and nothing is created in Shuttle.
Payment provider What the customer sees Notes
PayPal Commerce PayPal buttons, with Venmo and Pay Later where PayPal offers them and the merchant has not turned them off Returns the customer’s details, a shipping address and a payment token. Saving a payment method (TOKENISE) needs Enable Reference Transactions (required to save card) on the merchant’s PayPal connection: without it, PayPal shows no buttons for TOKENISE.
Sandbox A 3rd Party Express Checkout button that opens a simulated provider window For testing your integration without a live provider.
You want to action Then your server calls
Take a payment for a basket whose total you already know AUTHORISE Create a payment, for the amount the customer approved
Collect a payment method now, and charge it once you know the final total (after adding shipping or tax, for example) TOKENISE Create a payment, for the final amount
Save a payment method for later, with no payment now TOKENISE Create a payment method

In all three, set payment_token to true so that on_success returns the gateway_data you pay with.

With AUTHORISE, create the payment for the same amount and currency the customer approved. PayPal refuses a payment for a different amount, so if the total can still change, use TOKENISE.

Load shuttle.js with your keys, add an element and your options, handle the callbacks, then create the payment on your server. Each step is set out in the Express Checkout integration guide, and every option and callback field in Express Checkout options.

Was this page helpful?