Guide

Payment Links vs Checkout Sessions

Manza offers two ways to accept card payments. Both land the customer on a hosted Manza page that handles card entry, 3D Secure, and PCI compliance — the difference is how you create them and how you keep state in sync.

At a glance#

Payment LinksCheckout Sessions
CreatedOnce, by you, via API or dashboardPer order, by your server, via API only
SharedManually — WhatsApp, email, SMS, QRProgrammatically — you redirect to the URL
ReusableYes (single or multi-payment)No — one URL per order
LifespanUntil cancelled or expires_at30 minutes by default, up to 7 days
State syncpayment_link.paid webhook or list endpointcheckout_session.completed webhook or GET the session
Settlementpayment_link.payment_settled webhook (settled_at set)checkout_session.settled webhook (settled_at set)
MetadataNone — use description / payment_referenceStructured metadata object (up to 50 keys)
DashboardListed and manageable in the UIManaged entirely from your server

Choose Checkout Sessions if…#

  • A customer is checking out an order/cart in your app and you redirect them to pay, then back.
  • You need structured metadata (order_id, user_id) to reconcile the payment on completion.
  • You want the session to expire automatically after a short window (default 30 minutes).
  • You want a programmatic, per-order flow without managing link objects in the dashboard.

Still not sure?#

If the customer drives the moment of payment (clicking “Pay now” in your checkout), use Checkout Sessions. If you drive the moment of payment (sending an invoice or a payment request), use Payment Links.