Pay at checkout
The card number goes from the buyer’s device straight to the PSP’s own form, so our servers see only a token. The payment is recorded before the PSP is called, and the card is authorised, not charged. Nothing reaches the ledger yet, because no money has moved.
- The buyer types card details into the PSP’s hosted form; the app gets a token back.
- The app places the order with the token, and checkout asks the payment service to pay for it.
- The payment service records the payment, pending, with its key, then asks the PSP to authorise the card.
- When the PSP confirms, checkout accepts the order. A wallet part, if any, is reserved in the same step.
Diagram as text
Components: Buyer's app (Client); Checkout (Service); Payment service (Service); Payments DB (Postgres) (SQL DB); PSP (hosted card form) (External API). Connections: Buyer's app → Checkout (place order + token); Checkout → Payment service (create payment); Payment service → Payments DB (Postgres) (payment + key, pending); Payment service → PSP (hosted card form) (authorise); Buyer's app → PSP (hosted card form) (card details).
Read:Learn: High-level architectureLearn: Auth and sessions
Keep reading+1 min
What a hosted form does for card compliance
With the PSP’s hosted form, card numbers stay off your servers, which can shrink how much of the platform the card-security rules reach. Which self-assessment applies depends on the integration, and the acquirer confirms it: a page that embeds the form must still be protected from script attacks (PCI SSC (opens in a new tab)).
Check yourself