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 Links | Checkout Sessions |
| --- | --- | --- |
| **Created** | Once, by you, via API or dashboard | Per order, by your server, via API only |
| **Shared** | Manually — WhatsApp, email, SMS, QR | Programmatically — you redirect to the URL |
| **Reusable** | Yes (single or multi-payment) | No — one URL per order |
| **Lifespan** | Until cancelled or expires_at | 30 minutes by default, up to 7 days |
| **State sync** | payment_link.paid webhook or list endpoint | checkout_session.completed webhook or GET the session |
| **Settlement** | payment_link.payment_settled webhook (settled_at set) | checkout_session.settled webhook (settled_at set) |
| **Metadata** | None — use description / payment_reference | Structured metadata object (up to 50 keys) |
| **Dashboard** | Listed and manageable in the UI | Managed entirely from your server |

## Choose Payment Links if…

- You want a URL you can paste into a message and send to one customer.
- You're sending an invoice and want the customer to pay from the invoice email.
- You sell at a fixed price and want a reusable URL any number of customers can pay.
- You don't have a server-side integration — you operate from the dashboard.
- You need to bill on a recurring schedule (see [Recurring billing](https://ma.manza.dev/docs/recurring-billing)).

## 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?

> **Tip:** 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.