RoxPay API
Guides

Payment Lifecycle

Understand the full lifecycle of a RoxPay payment, from creation to settlement, refund, and dispute.

Every payment link goes through a series of statuses during its lifetime. Understanding these statuses is essential for building reliable integrations.

Status Flow

CREATED → OPENED → INITIALIZED → AUTHORIZED → SETTLED

                                RELEASED (void)
                                    
SETTLED → REFUNDED / PARTIALLY_REFUNDED
SETTLED → DISPUTED → CHARGEBACK_ACCEPTED

Any stage → DECLINED / TECHNICAL_ERROR / TIMEOUT / EXPIRED / CANCELLED

Status Reference

IDStatusDescription
1CREATEDLink generated, not yet opened by the customer.
13OPENEDCustomer opened the checkout page.
14INITIALIZEDCustomer started entering payment details.
8AUTHORIZEDPre-authorized — funds held but not captured.
2SETTLEDPayment captured and settled. Money is on its way.
15PENDINGAwaiting async settlement (e.g. SEPA, bank transfer).
3EXPIREDLink validity period elapsed without payment.
4RELEASEDPre-authorization voided. Funds released back to customer.
5REFUNDEDFully refunded.
9PARTIALLY_REFUNDEDPartially refunded.
10DECLINEDPayment declined by the bank or PSP.
6TECHNICAL_ERRORPSP technical error during processing.
7DISPUTEDCustomer initiated a chargeback.
11TIMEOUTPayment attempt timed out.
12CANCELLEDCancelled by the customer or merchant.
16CHARGEBACK_ACCEPTEDChargeback accepted — funds returned to customer.

Terminal States

These statuses are final — no further transitions are possible:

  • SETTLED (unless refunded or disputed later)
  • EXPIRED
  • RELEASED
  • REFUNDED
  • DECLINED
  • TECHNICAL_ERROR
  • TIMEOUT
  • CANCELLED
  • CHARGEBACK_ACCEPTED

Checkout Availability

Customers can only access the checkout page in these statuses:

  • CREATED
  • OPENED
  • INITIALIZED

Once a payment reaches AUTHORIZED, SETTLED, or any terminal state, the checkout page is no longer accessible.

Monitoring Status Changes

Use webhooks to receive real-time notifications when a payment changes status. Polling the transaction endpoint is possible but not recommended for production use.

curl -X GET "https://app.roxpay.eu/api/v4/transactions/YOUR_TRANSACTION_ID" \
  -H "Authorization: Bearer YOUR_TOKEN"

Refunds

Refunds can be full or partial, and only apply to SETTLED transactions:

curl -X POST https://app.roxpay.eu/api/v4/payments/refund \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "TransactionIds": ["a1b2c3d4-..."],
    "Amount": 1500
  }'

Omit Amount for a full refund.

On this page