Recurring Billing API Reference
Version: 1.0.0
The Paysera Recurring Billing API enables automated recurring payments using saved payment tokens. Create payment requests, authorize payments, and manage notifications programmatically.
Base URLs
- Checkout API:
https://checkout-eu-a.paysera.com/checkout/rest/v1 - Notification API:
https://checkout-eu-a.paysera.com/notification/rest/v1
Recurring billing is available only in the Production environment. There is no separate test environment.
Authentication
Most endpoints require MAC (Message Authentication Code) authentication. Some public endpoints do not require authentication.
Authorization Header Format:
Authorization: MAC id="CLIENT_ID", ts="TIMESTAMP", nonce="RANDOM_STRING", mac="MAC_HASH", ext="body_hash=BODY_HASH"
Example:
Authorization: MAC id="wkVd93h2uS", ts="1343811600", nonce="nQnNaSNyubfPErjRO55yaaEYo9YZfKHN", mac="B3iRmOP5pZCTt5AdhJDnOj9O1F3U/oZ5z7Z6WgbG6h4="
MAC Parameters:
id- Your MAC ID (mac_id credential)ts- Current UNIX timestampnonce- Randomly generated unique stringmac- Calculated MAC hash value using mac_key and mac_algorithmext- Extension field (URL-encoded, contains optional body_hash, project_id, location_id)
For more details, please refer to the Recurring Billing Authentication Documentation.
Available Endpoints
Payment Request API
| Endpoint | Method | Auth Required | Description |
|---|---|---|---|
/payment-requests | POST | ✓ Yes | Create a new payment request |
/payment-requests/{id} | GET | ✓ Yes | Get payment request details |
/payment-requests/{id}/public-info | GET | ❌ No | Get public payment information |
/payment-requests/{id}/set-email | PUT | ✓ Yes | Update payer email address |
/payment-requests/{id}/set-missing-email | PUT | ❌ No | Set missing email (public) |
/payment-requests/{id}/methods | GET | ❌ No | Get available payment methods |
/payment-requests/{id}/authorize | PUT | ✓ Yes | Authorize payment with token |
Notification Event API
| Endpoint | Method | Auth Required | Description |
|---|---|---|---|
/notifications | GET | ✓ Yes | Get all notifications with filtering |
/notifications/{id} | GET | ✓ Yes | Get single notification details |
/notifications/{id}/read | PUT | ✓ Yes | Mark notification as read |
Key Concepts
Initial Payments
For the first payment in a recurring series:
- Provide
accept_url,cancel_url, andcallback_url(all required) - Set
token_strategy: "required"to obtain a payment token - Customer completes payment with user interaction
- After successful capture, you receive an
issued_tokenon the Payment Request, delivered via the callback notification atdata.payment_request.issued_token
Recurring Payments
For subsequent payments in a series:
- Create a new payment request the same way (
accept_url,cancel_url, andcallback_urlare still required by the API) - Authorize the payment with the stored token via
PUT /payment-requests/{id}/authorize - No user interaction required - payment is automatically captured during authorisation
Payment Statuses
Payment requests transition through the following statuses:
new- Payment request created, awaiting customer paymentprocessing- Payment is being processedauthorized- Payment authorized, ready for capturecaptured- Payment successfully completed and funds capturedcanceled- Payment was canceled or refundedinstantly_refunded- Payment was immediately refunded
Notification Statuses
Notifications have their own status lifecycle:
new- Notification created, not yet processedread- Notification has been marked as processed
HTTP Status Codes
| Code | Meaning | Description |
|---|---|---|
| 200 | OK | Request succeeded |
| 201 | Created | Resource created successfully |
| 400 | Bad Request | Invalid request parameters or malformed JSON |
| 401 | Unauthorized | Authentication failed or missing credentials |
| 403 | Forbidden | Valid credentials but insufficient permissions |
| 404 | Not Found | Resource doesn't exist |
| 500 | Internal Server Error | Server-side error |
Rate Limits
The API implements rate limiting to ensure service stability. If you exceed the rate limit, you will receive a 429 Too Many Requests response.
Contact
Paysera Support: tech_support@paysera.com Website: https://www.paysera.com