Payment Flow
Understand the complete payment lifecycle from order creation to settlement.
This guide explains the complete payment flow from order creation to completion.
Flow Overview​
Detailed Steps​
1. Order Creation​
The merchant creates a payment order with transaction details.
Order State: pending
Required Data:
- Amount and currency
- Success/failure/callback URLs
- Merchant reference
2. Payment Link Creation​
Generate a payment URL for the customer.
Link State: active
Optional Configuration:
- Link lifetime (default: 3 days)
- Language preference
- Payment flow (direct/interactive)
- Pre-selected payment method
3. Customer Redirect​
Redirect the customer to the payment page.
// Redirect customer
header('Location: ' . $paymentUrl);
exit;
Or use JavaScript:
window.location.href = paymentUrl;
4. Payment Method Selection​
Customer sees the payment page:
Available Methods depend on:
- Currency
- Amount (min/max limits)
- Country
- Merchant configuration
5. Payment Processing​
Customer completes the payment with their chosen method.
Processing States:
- Submitting to payment provider
- Waiting for bank response
- Verifying transaction
6. Payment Result​
The payment completes with a success or failure.
Success Path:
Payment Processing → Completed → Webhook → Redirect to success_url
Failure Path:
Payment Processing → Failed → Webhook → Redirect to failure_url
7. Webhook Notification​
Paysera sends a callback to your server.
Webhook Contains:
- An
eventobject (type+name) identifying what changed - The order state (or, for thin payment events, the affected payment) — branch on
order.status/payment.status, not on the event name - Timestamps
See the Webhook Events Reference for the exact events and payloads.
8. Customer Redirect​
Customer is redirected back to your site.
Success URL receives:
- Query parameters you included in success_url
- Customer lands on thank you page
Failure URL receives:
- Query parameters you included in failure_url
- Customer can retry or contact support
9. Payouts​
After a successful payment, its funds are credited to the project's settlement account. By default, this is the merchant's Paysera account set in the Paysera Checkout portal; the credited amount appears in the account statement. For orders with splits, only the merchant's share is paid out to the settlement account — see Split Payments.
The payment becomes settled when the funds reach the settlement account. While a payout is held, the payment stays pending_settlement and the order is not yet paid — see Payment Statuses. Test-mode payments are not paid out — see Test Mode.
Payouts to an external bank account
Under certain conditions, selected projects may be eligible for external settlement payouts. For such projects, payouts of card payments and payments with splits can be made to an external bank account instead of the Paysera account. The project's Paysera account stays in use: commission is charged to it. To request this option, contact Paysera customer support with the project ID.
- Accepted accounts. Only EEA SEPA IBANs are accepted.
- Transfers. Each payout in EUR is made by a separate SEPA credit transfer.
- Payee verification. Before each transfer, the account holder's name is verified (Verification of Payee). If the check does not return a full match or cannot be completed, the payout is held until the details are confirmed or corrected — see the
recipient.vop_checkedwebhook. To avoid holds, enter the account holder's name exactly as the bank has it. - Switching back. The settlement account can be switched back to the Paysera account at any time. The switch applies to new payouts only; payouts already created, including held ones, keep their account.
Complete Sequence Diagram​
Alternative Flows​
Bank Transfer (Pending)​
Bank transfers may remain pending until the customer completes the transfer:
Pending State:
- Customer receives bank details
- Order stays in
pendingstatus - Webhook sent when bank confirms transfer
Multiple Payment Attempts​
A customer may fail and retry:
Payment Link Expiration​
Timing Considerations​
| Stage | Typical Duration |
|---|---|
| Order + Link creation | < 1 second |
| Customer decision | Varies |
| Payment processing | 5-30 seconds |
| Webhook delivery | < 5 seconds |
| Redirect | < 1 second |
Error Handling​
Network Errors​
If your server doesn't receive the webhook:
- Paysera retries delivery up to 4 times total with exponential backoff — each retry waits ~1 hour, then ~5 hours, then ~25 hours after the previous attempt (so ~1 h, ~6 h, and ~31 h after the first attempt). See Webhooks.
- Query order status as a backup with
GET /merchant-order/integration/v1/orders/{id}
Payment Provider Errors​
If the bank/gateway fails:
- Customer sees error message
- Can retry with same or different method
- Order remains in
pendingstatus
Timeout Handling​
- Payment links expire after configured lifetime
- Create a new link if needed
- Order can be reused for new links