Base URLs
Sandbox
Production
Authentication
All API requests require RSA-SHA256 signature authentication. Every request must include these headers:| Header | Required | Description |
|---|---|---|
Client-Id | Yes | Your merchant identifier |
Request-Time | Yes | ISO 8601 UTC timestamp (e.g., 2024-01-10T12:22:30Z) |
Signature | Yes | RSA signature: algorithm=SHA256withRSA, keyVersion=<n>, signature=<base64> |
Content-Type | Yes | Must be application/json |
Signature Construction
The signature is computed over a signing string built from:For detailed signing implementation with code examples in Node.js, Python, and Java, see Authentication & Environments or the Authentication Deep Dive.
Request Format
All requests use JSON with the following conventions:- Amounts are specified in minor units (cents). Example:
1250= €12.50 - Timestamps use ISO 8601 format in UTC (with
Zsuffix) - IDs must be unique per transaction (
paymentRequestIdserves as idempotency key)
Example Request Body
Response Format
All responses include aresult object indicating the outcome:
Success Response
Result Status Codes
| Status | Meaning | Action |
|---|---|---|
S | Success | Transaction completed successfully |
F | Failure | Transaction failed - check resultCode for details |
U | Unknown | Indeterminate state - use Inquiry API to check status |
A | Accepted | Request accepted, processing asynchronously |
Available Endpoints
Payments
| Endpoint | Method | Description |
|---|---|---|
/v1/payments/createQROrder | POST | Create a merchant-presented QR code for payment |
/v1/payments/retailPay | POST | Process payment from customer-presented QR/barcode |
/v1/payments/linkPayCreate | POST | Create a redirect link for app-to-app payment |
/v1/payments/inquiryPayment | POST | Query payment status |
Webhooks
| Endpoint | Direction | Description |
|---|---|---|
| Your webhook URL | Rebell → Merchant | Receives payment notifications (payment.succeeded, payment.failed) |
Error Handling
When a request fails, the response includes error details:Error Response
Common Error Codes
| Code | Description | Resolution |
|---|---|---|
INVALID_SIGNATURE | Signature validation failed | Verify signing string construction and key |
TIMESTAMP_INVALID | Request-Time outside ±5 minute window | Sync server clock with NTP |
INVALID_CLIENT_ID | Client-Id not recognized | Verify credentials for correct environment |
ORDER_NOT_EXIST | Payment/order not found | Verify paymentId or paymentRequestId |
REPEAT_REQUEST | Duplicate paymentRequestId | Use unique ID for each transaction |
Rate Limits
| Environment | Limit |
|---|---|
| Sandbox | 100 requests/minute |
| Production | Contact Rebell for limits based on your integration |
Testing in Sandbox
The sandbox environment simulates the full payment flow:- Create payments using test credentials
- Simulate user actions - payments auto-complete after creation
- Receive webhooks to your configured endpoint
- Query status using the Inquiry API
SDK & Code Examples
Complete signing and API client implementations are available in the Authentication Deep Dive:- Node.js -
RebellClientclass with full signing - Python -
RebellClientclass with cryptography library - Java - Signing utilities and HTTP client examples
Related Documentation
Quick Integration Guide
Step-by-step integration walkthrough
Authentication Deep Dive
Detailed signing implementation
Webhooks
Webhook setup and signature verification
Error Handling
Complete error codes reference