| Type | When to use | Need debtor info? | Need amount upfront? | Customer action window |
|---|---|---|---|---|
| RTP Now | Instant disbursements (cashback, refunds, rewards). | Yes - provide IBAN or Raast ID. | Yes. | Minutes; customer acts immediately. |
| RTP Later | Invoices with delayed approval. | Yes - provide IBAN or Raast ID. | Yes. | Hours or days; configurable expiry. |
| Dynamic QR | Point-of-sale or checkout flows with known amount. | No - Safepay shares payer details in the webhook. | Yes. | Customer scans and pays immediately. |
| Static QR | Reusable QR displayed on signage or invoices. | No. | No - payer enters the amount. | Open-ended; multiple payments allowed. |
All payment types emit webhook notifications. Integrate webhooks alongside any polling to update customer-facing UIs promptly.
Lifecycle summary
- RTP Now - create payment -> customer approves in their banking app -> Safepay notifies you -> present confirmation or retry.
- RTP Later - same as RTP Now but allows customers more time; offer a manual refresh option in your UI.
- Dynamic QR - generate per order; Safepay returns payer identifiers once settled.
- Static QR - generate once; reconcile incoming payments by comparing amount and optional memo fields.
API mapping
| Type | Endpoint | Required field | Primary webhook events |
|---|---|---|---|
| RTP Now | POST /v1/aggregators/{{aggregator_id}}/payments | type: RTP_NOW | payment.created, payment.completed, payment.settled |
| RTP Later | POST /v1/aggregators/{{aggregator_id}}/payments | type: RTP_LATER | payment.created, payment.pending_authorization, payment.settled |
| Dynamic QR | POST /v1/aggregators/{{aggregator_id}}/qrs | type: DYNAMIC | payment.created, payment.completed, payment.settled |
| Static QR | POST /v1/aggregators/{{aggregator_id}}/qrs | type: STATIC | payment.created, payment.completed, payment.settled |