Authorizations
Authentication using Bearer tokens. Include your API key in the Authorization header.
Key Types:
- Test Keys:
sk_test_*for development and testing - Live Keys:
sk_*for production environments - Public Keys:
pk_test_*orpk_*for client-side operations
📩 Need access? Contact Support to request your API keys.
Usage:
Authorization: Bearer sk_test_4eC39HqLyjWDarjtT1zdp7dcHeaders
A unique key to prevent duplicate operations. Use the same key for retries to ensure idempotent behavior.
Best Practices:
- Use UUIDs or other cryptographically unique identifiers
- Maintain keys for at least 24 hours for retry scenarios
- Use different keys for different operations
- Monitor
Idempotent-Replayedheader for cache hits
1 - 255Body
Request payload for creating a new Payment Request.
If type is omitted, it defaults to link.
- Link:
expires_atdefaults to 24h (see ExpiresAt). - Push:
expires_atdefaults to 2 minutes (see ExpiresAt).
The amount to be charged in the smallest currency unit. For example, 20.00 ZAR is represented as 2000 cents. Learn more about minor units.
1000
The ISO 4217 currency code for the payment.
"ZAR"
Delivery mode of the payment request.
link, push "link"
External reference for reconciliation or tracking purposes. Must be unique within your merchant account.
255"INV-2024-001"
Human-readable description of what the payment is for
500"Product purchase"
ISO 8601 timestamp indicating when the Payment Request expires.
Defaults (if not provided):
- Link (
type=linkor omitted): 24 hours fromcreated_at - Push (
type=push): 2 minutes fromcreated_at
Must be in the future when creating or updating.
"2025-06-17T10:30:00Z"
Details for push (bank) payment requests. Uses a provider-specific sub-object. Beta — only Capitec is supported.
Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. NEW Limitations:
- Maximum 10 keys
- Key names must be strings (max 40 characters)
- Values must be strings (max 500 characters)
{
"customer_id": "cust_123456",
"order_id": "ord_789012"
}Response
Payment Request created successfully
A Payment Request represents a request for payment that can be shared via a link or sent to a banking app for authorization and Payment.
Unique identifier for the Payment Request.
"pr_6phg74i4jG9wbzZbFDUQB"
Delivery mode of the payment request.
link, push "link"
Current status of the Payment Request.
- Link:
active,paid,expired - Push:
active,paid,expired,failed
active, paid, expired, failed "active"
Associated payment ID when the request has been paid. Unique identifier for a payment
"p_xyz789abc123def456"
The amount to be charged in the smallest currency unit. For example, 20.00 ZAR is represented as 2000 cents. Learn more about minor units.
1000
The ISO 4217 currency code for the payment.
"ZAR"
External reference for reconciliation or tracking purposes. Must be unique within your merchant account.
255"INV-2024-001"
ISO 8601 timestamp indicating when the Payment Request expires.
Defaults (if not provided):
- Link (
type=linkor omitted): 24 hours fromcreated_at - Push (
type=push): 2 minutes fromcreated_at
Must be in the future when creating or updating.
"2025-06-17T10:30:00Z"
Human-readable description of what the payment is for
500"Product purchase"
Details for link-based payment requests.
Details for push (bank) payment requests. Uses a provider-specific sub-object. Beta — only Capitec is supported.
Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. NEW Limitations:
- Maximum 10 keys
- Key names must be strings (max 40 characters)
- Values must be strings (max 500 characters)
{
"customer_id": "cust_123456",
"order_id": "ord_789012"
}Creation timestamp (UTC).
"2025-06-16T10:30:00Z"
Last update timestamp (UTC).
"2025-06-16T10:30:00Z"

