Skip to main content

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

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 event object (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_checked webhook. 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 pending status
  • Webhook sent when bank confirms transfer

Multiple Payment Attempts​

A customer may fail and retry:

Timing Considerations​

StageTypical Duration
Order + Link creation< 1 second
Customer decisionVaries
Payment processing5-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 pending status

Timeout Handling​

  • Payment links expire after configured lifetime
  • Create a new link if needed
  • Order can be reused for new links