Docs
Firmly Agentic Commerce
Set theme to dark (⇧+D)

Checkout

The Checkout API covers the steps between cart-building and payment: setting the shipping address, reviewing and recording buyer consents, and — for a subset of merchants — staging billing info on the cart.

​​ Typical Flow

​​ Set Shipping Info

Send one shipping address for the cart via Set Shipping Info. The same address is used by every shipment; the response carries per-shipment cost and tax breakdowns.

​​ Handle Consents (when applicable)

Call Get Consents to retrieve any consents the merchant has configured for this cart. The endpoint returns an empty array for merchants without consents — skip the next step in that case.

When the array is non-empty, present each item to the buyer (using text / html and the ui_slot placement hint) and submit the buyer’s selections via Set Consents. Required consents (required: true) must be signed before payment — see Set Consents for the enforcement rule.

​​ Place / Complete Order

Pass billing_info directly in the body of Place Order or Complete Order. This is the standard path for nearly all merchants.

​​ Available Endpoints

​​ Shipping Address

One shipping address applies to the whole cart. The address is validated for supported country and state/province, then used to recalculate shipping methods and tax. See Set Shipping Info for the full field list and response example.

The shipping address may also be used for billing when billing_info is omitted from the place-order request. Whether the merchant accepts the shipping address as the billing address depends on the merchant: many do, but for merchants that require a distinct billing address, omitting billing_info causes place-order to reject the request (an OperationNotSupported-class or validation error). If you are unsure, pass billing_info explicitly.

​​ Consents

Consent objects are returned as a top-level array from Get Consents. Each carries a stable id, a type (MARKETING / TERMS_AND_CONDITIONS / PRIVACY_POLICY / OTHER), placement hint (ui_slot), and three booleans that drive integration logic:

Field Meaning
explicit When true, the buyer must take an action (e.g. tick a box). When false, granted implicitly.
required When true, must be signed before the order can be placed. A required consent that is also explicit: true must be actively accepted by the buyer via Set Consents; a required consent that is explicit: false is auto-signed (see Get Consents).
revokable When true, the buyer can revoke after signing.

The accepted/revoked state is recorded by calling Set Consents with { consents: [{ id, revoke? }, ...] }. Required-explicit consents are enforced at place-order: an unsigned required-explicit consent rejects the order.

​​ Payment

Card data and final order placement are handled by the Payment endpoints. The Checkout endpoints never receive card numbers; card data is encrypted client-side and sent only to the Payment endpoints.

​​ Next Steps

Payment Processing Encrypt the buyer’s card and place the order.