PaidGoods

Checkout

Hosted checkout, checkout links, the embed script, and the Checkout API.

Hosted checkout

The hosted checkout is served from the store host and is also the permanent delivery page for an invoice. Buyers choose an eligible payment method, complete payment, and return to the invoice page for delivery.

It runs in three steps: Order information (email, discount code, order details, payment method, terms), Confirm & pay, and Receive your items. The order summary sits on the left on wide screens; on phones and in the embed modal it folds into an Order total bar at the top.

  • Crypto shows as one Cryptocurrency row when the store accepts two or more coins (Storefront → Checkout → Group crypto into one option). Choosing it opens a coin grid; coins the store hasn't set up are shown as Not available.
  • Pay on mobile (desktop only) shows a QR code of the current checkout so the buyer can finish on their phone.
  • The crypto step shows the QR code, the address and exact amount with copy buttons, an Open wallet link, a network warning, the price-lock timer, what arrived when a payment is short, and refund progress. The Order information table lists the invoice ID, method, amounts, address and times.
  • If an item was taken off sale after the buyer added it, the checkout names it and offers Remove and continue instead of an error. The storefront cart page does the same.

Storefront → Checkout shows the real checkout in a live preview with a sample cart (checkout, crypto step and completed page; desktop, mobile and popup sizes). Open real checkout and Preview as popup open a test-mode checkout of one of your products.

Storefront and developer links can prefill cart lines, buyer email, coupon, affiliate, UTM fields, and test-mode tokens. The storefront /checkout-link endpoint converts link parameters into the hosted checkout URL.

Embed and modal script

The storefront serves the script at /embed/v1.js and /embed/v3.js. It exposes both StoreEmbed and the SellAuth-format sellAuth global.

Use StoreEmbed.open({ cart: [{ productId, variantId, quantity }], email, coupon, affiliate, metadata, redirectUrl }) or sellAuth.open(...). Both globals support open, close, on, off, and version.

Buttons can use data-dc-cart, data-dc-variant, data-sellauth-cart, or data-sellauth-variant. Supported SellAuth-style attributes include data-sellauth-shop, data-sellauth-product, data-sellauth-quantity, data-sellauth-email, data-sellauth-coupon, data-sellauth-affiliate, data-sellauth-theme, data-sellauth-language, data-sellauth-redirect-url, and data-sellauth-mode.

When Full-screen redirect notice is on in Storefront → Checkout, a completed order with a redirect URL opens a full-screen notice. The buyer can continue to the merchant URL or stay on the receipt page.

When Withdrawal form is on, a completed order shows a right-of-withdrawal form for 14 days after purchase (only to EU/EEA buyers, or buyers of unknown country, while Only for EU / EEA buyers is on). Sending it opens a ticket on the order in Tickets and emails the buyer the Withdrawal request received template. Nothing is refunded automatically: reply on the ticket and refund from the invoice if you accept it. One request per order.

The modal opens full screen on phones and as a centred sheet on larger screens; it is the same checkout as the hosted page, in its compact layout. Test links can pass testToken (or data-dc-test-token).

Events are dispatched as dc:* and sellauth:*. The script captures UTM parameters, referrer, affiliate code, metadata, theme, language, modal/new-tab mode, nonce, and simple variant selection.

Checkout API

Use the API reference for POST /v1/public/stores/{storeId}/checkout and the SellAuth-format POST /formats/sellauth/v1/shops/{storeId}/checkout. The API creates server-side checkout/invoice state; totals are calculated by the commerce domains, not by the caller.

Buyer emails

Buyers get two emails around checkout, the same moments SellAuth uses:

  • Invoice created: once the invoice exists and is waiting for payment. It lists the items and total and links to the invoice page, so a buyer who closed the tab can come back and pay. It is not sent when store balance pays the invoice in the same step (including free orders and reseller orders), because the completion email follows straight away.
  • Order completed: when the payment is confirmed. It waits (up to about two minutes) for automatic delivery to finish and then includes the delivered serials and text, the names of delivered files (downloads open from the invoice page), and a note for anything still to come: manual services, shipments, preorders, or a delivery that failed. When a Trustpilot BCC is set, the delivered values are left out of the email and stay on the invoice page.

Both emails can be customised under Storefront → Emails (invoice_created, invoice_processed). Store templates receive invoice.items[].deliverables, invoice.items[].files and invoice.items[].delivery_note on the completion email.

Store credit and cashback

Signed-in buyers can combine available credit with one external method in the same currency. Checkout shows the credit deduction and charges the remainder. Credit is reserved until payment completes; a failed or expired payment releases it. Subscription and gift-card purchases do not offer split credit. Refunds return the external portion first, then credit to the buyer's balance.

Set Cashback, its per-order cap, refund window and expiry under Storefront → Checkout. Cashback is off at 0%; a cap of 0 means no cap. Checkout shows Earn X back when enabled. The default wait is seven days after payment and unused credit expires 90 days after earning. Credit-funded value, top-ups, gift cards, tax, shipping and fees earn nothing. Any refund removes the order's cashback; credit already spent may leave a negative balance.

Split-payment refunds cannot exceed the corrected paid amount on the invoice. The external payment is refunded first, then store credit. Checkout on a merchant domain keeps buyer-account requests on that domain.

On this page