Transactions
Transactions are the core of ZuriPay. Use these endpoints to initialize payments, verify their status, and manage the full payment lifecycle.
The transaction model
The transaction model contains all the information about a payment processed through ZuriPay.
Properties
- Name
transactionId- Type
- string
- Description
Unique transaction identifier (e.g.,
zp_a1b2c3d4e5).
- Name
transactionReference- Type
- string
- Description
Unique reference for the transaction (e.g.,
ZURIPAYa1b2c3d4e5).
- Name
amount- Type
- integer
- Description
Transaction amount in the smallest currency unit (e.g., cents).
1000= $10.00.
- Name
charges- Type
- integer
- Description
ZuriPay processing fee in the smallest currency unit.
- Name
total- Type
- integer
- Description
Total amount including charges.
- Name
currency- Type
- string
- Description
Three-letter ISO currency code (e.g.,
USD,ZWL).
- Name
emailAddress- Type
- string
- Description
Customer's email address.
- Name
status- Type
- string
- Description
Transaction status:
pending,processing,success, orfailed.
- Name
checkoutId- Type
- string
- Description
Checkout session identifier for hosted checkout.
- Name
successUrl- Type
- string
- Description
URL to redirect the customer after successful payment.
- Name
failureUrl- Type
- string
- Description
URL to redirect the customer after failed payment.
- Name
dateCreated- Type
- timestamp
- Description
Timestamp when the transaction was created.
Initialize transaction
Create a new payment transaction. The API key determines whether this is a test or live transaction.
Required attributes
- Name
amount- Type
- integer
- Description
Amount in the smallest currency unit (e.g.,
1000for $10.00).
- Name
email- Type
- string
- Description
Customer's email address.
- Name
currency- Type
- string
- Description
Three-letter ISO currency code (e.g.,
USD,ZWL,ZAR).
Optional attributes
- Name
payment_method_type- Type
- string
- Description
Payment method type:
mobile_moneyorcard.
- Name
payment_method_code- Type
- string
- Description
Specific payment method code:
ecocash,innbucks,zimswitch,dpo,ozow.
- Name
mobile_money_number- Type
- string
- Description
Customer's mobile money number (required for
mobile_moneytype). Must start with0.
- Name
transaction_reference- Type
- string
- Description
Custom reference (auto-generated if not provided).
- Name
success_url- Type
- string
- Description
Redirect URL for successful payment.
- Name
failure_url- Type
- string
- Description
Redirect URL for failed payment.
- Name
requested_response- Type
- string
- Description
Test mode only: simulate
successorfailedfor EcoCash.
Request
curl -X POST https://api.zuripay.app/v1/transactions \
-H "Authorization: Bearer sk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"amount": 1000,
"email": "[email protected]",
"currency": "USD",
"success_url": "https://yoursite.com/success",
"failure_url": "https://yoursite.com/failure"
}'
Response
{
"result": "success",
"transaction_id": "zp_a1b2c3d4e5",
"transaction_reference": "ZURIPAYa1b2c3d4e5",
"message": "Transaction initiated successfully.",
"total": 10.10
}
Verify transaction
Verify the status of a transaction by its reference. Use this endpoint to confirm whether a payment was successful before fulfilling an order.
Required parameters
- Name
reference- Type
- string
- Description
The transaction reference returned during initialization.
Request
curl -G https://api.zuripay.app/v1/transactions/verify \
-H "Authorization: Bearer sk_live_your_api_key" \
-d reference=ZURIPAYa1b2c3d4e5
Response
{
"result": "success",
"transaction_id": "zp_a1b2c3d4e5",
"transaction_reference": "ZURIPAYa1b2c3d4e5",
"amount": 1000,
"charges": 10,
"total": 1010,
"currency": "USD",
"status": "success",
"emailAddress": "[email protected]",
"dateCreated": "2025-01-15T10:30:00Z"
}
List transactions
Retrieve a list of all transactions for your business.
Optional parameters
- Name
start_date- Type
- string
- Description
Filter by start date (format:
YYYY-MM-DD).
- Name
end_date- Type
- string
- Description
Filter by end date (format:
YYYY-MM-DD).
- Name
limit- Type
- integer
- Description
Maximum number of records to return (default: 100).
Request
curl -G https://api.zuripay.app/v1/transactions/list \
-H "Authorization: Bearer sk_live_your_api_key" \
-d limit=10
Response
{
"result": "success",
"transactions": [
{
"transaction_id": "zp_a1b2c3d4e5",
"amount": "10.00",
"currency": "USD",
"status": "success",
"message": "Transaction listed successfully.",
"details": {}
}
]
}
Fetch transaction
Retrieve a single transaction by its public ID.
Required parameters
- Name
publicId- Type
- string
- Description
The public ID of the transaction.
Request
curl -G https://api.zuripay.app/v1/transactions/fetch \
-H "Authorization: Bearer sk_live_your_api_key" \
-d publicId=abc123
Refund transaction
Initiate a refund for a completed transaction.
Required attributes
- Name
transaction_reference- Type
- string
- Description
The reference of the transaction to refund.
- Name
amount- Type
- integer
- Description
Amount to refund in the smallest currency unit. Must be less than or equal to the original transaction amount.
Request
curl -X POST https://api.zuripay.app/v1/transactions/refund \
-H "Authorization: Bearer sk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"transaction_reference": "ZURIPAYa1b2c3d4e5",
"amount": 1000
}'
Response
{
"result": "success",
"message": "Refund initiated successfully.",
"refund_id": "ref_xyz789",
"status": "pending"
}