Skip to content

Ebook Platform Integration Walkthrough

This tutorial walks through a complete end-to-end integration for an ebook platform where customers purchase books from publishers. We use PayOnUs to collect payments across multiple channels, then settle net proceeds to publisher wallets on a T+1 basis.

Scenario

Platform: BookShelf (your ebook platform)
Publisher: Anton Warren
Customer: John Smith
Book: Keep Me Busy by Anton Warren

Publishers are credited to their wallet the following business day (T+1). Publishers can withdraw their wallet balance at any time via Bank Transfer, Mobile Money, or EFT.


Part 1: Merchant Onboarding

Step 1 — Sign Up

Go to https://merchantv2.payonus.com and create your merchant account.

Step 2 — Log In

Once your account is confirmed, log in at https://auth.payonus.com/login.

Step 3 — Create a Business

Navigate to Business → Add Business on the dashboard. Create a business entity for your ebook platform — all transactions will be associated with this business and its businessId.

Step 4 — Switch to Sandbox

Toggle Test Mode to ON in the top-right of the dashboard. This switches the dashboard to the Sandbox environment, allowing you to test your full integration without processing real money.


Part 2: Configure API Settings

All settings below apply to the currently active environment. With Test Mode ON, you are configuring the Sandbox environment.

Step 5i — Retrieve API Credentials

Navigate to Settings → API Credentials and copy your Client ID and Client Secret. These are used to generate a Bearer token for all API requests.

Step 5ii — Set Your Webhook URL

Navigate to Settings → Webhook URL and enter the publicly accessible HTTPS endpoint on your server that will receive payment event notifications.

Example: https://api.bookshelf.com/webhooks/payonus

Step 5iii — Set Your Webhook Verification Key

Navigate to Settings → Webhook Verification Key and set a secret string. This key is used to verify the SHA-256 signature attached to every webhook payload.

Note: You will not receive payment notifications until both the Webhook URL and Webhook Verification Key are configured for the current environment. See Webhook Notifications for the full verification guide.


Part 3: Authentication

Step 6 — Generate an Access Token

Before making any API call, generate a Bearer token using your credentials.

  • URL: POST https://core-sandbox.payonus.com/api/v1/access-token
  • Headers: Content-Type: application/json

Request:

{
  "apiClientId": "your_client_id",
  "apiClientSecret": "your_client_secret"
}

Response:

{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "token_type": "Bearer",
  "expires_in": 86399
}

Cache this token and include it as Authorization: Bearer {access_token} on every subsequent request. The token expires after approximately 24 hours — refresh it just before expiry.


Part 4: Collecting Book Sale Payments

John Smith wants to buy Keep Me Busy. The following sections show how to collect payment for this purchase across four different channels.

All payin requests use the narration:

Purchase of ebook: Keep Me Busy by Anton Warren for Customer: John Smith


Step 7 — Dynamic Account (NGN 10,000)

Create a one-time virtual bank account. John transfers the exact amount to this account, and PayOnUs notifies your server via webhook once the payment is received.

7a. Create Dynamic Account

  • URL: POST https://core-sandbox.payonus.com/api/v1/virtual-accounts/dynamic
  • Headers: Authorization: Bearer {access_token}, Content-Type: application/json

Request:

{
  "amount": 10000.00,
  "reference": "ebook-dyn-20260101-001",
  "businessId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "customer": {
    "name": "John Smith",
    "email": "john.smith@example.com",
    "phone": "+2348012345678",
    "externalId": "customer-john-smith-001"
  }
}

Response:

{
  "status": 200,
  "message": "Success",
  "data": {
    "accountName": "BookShelf / John Smith",
    "accountNumber": "6023456789",
    "bankName": "Safe Haven MFB",
    "amount": 10000,
    "onusReference": "ONUS-NUB-4823916750234-01012026-090015",
    "merchantReference": "ebook-dyn-20260101-001"
  }
}

Share the accountNumber and bankName with John so he can complete the bank transfer. Store the onusReference — you will use it for status queries and reconciliation.

7b. Simulate Payment (Sandbox Only)

In the sandbox environment there are no real bank transfers. Use the Fund NGN Account endpoint to simulate John completing the payment:

  • URL: POST https://core-sandbox.payonus.com/api/v1/fund-ngn-account
  • Headers: Authorization: Bearer {access_token}, Content-Type: application/json

Request:

{
  "onusReference": "ONUS-NUB-4823916750234-01012026-090015",
  "accountNumber": "6023456789",
  "amount": 10000,
  "paymentStatus": "SUCCESSFUL",
  "forDynamicAccount": true
}

Response:

{
  "message": "Account funded successfully"
}

After calling this endpoint, PayOnUs sends a COLLECTION webhook event to your configured webhook URL confirming the payment.


Step 8 — Card Payment (NGN 9,500)

Collect payment via a debit or credit card. Card data must be RSA-encrypted using the Sandbox Public Key before sending.

8a. Encrypt the Card Data

Concatenate the card details in this format:

cardNo|cvv|expiryMonth|expiryYear

For this example we use the Visa test card (no PIN or OTP required):

Field Value
Card Number 4084127883172787
Expiry 09/30
CVV 123

Plaintext string to encrypt:

4084127883172787|123|09|30

Encrypt with RSA and Base64-encode the result. See Card Payments for a full list of test cards including PIN, OTP, and 3DS variants.

8b. Initiate Card Payment

  • URL: POST https://core-sandbox.payonus.com/api/v1/card-payments
  • Headers: Authorization: Bearer {access_token}, Content-Type: application/json

Request:

{
  "cardData": "D50S1yZKIeqiItKk751HfOQX3rlJWiCfPqPTiEphWVODQLxndDYbLXvr7l+0ZWdSz+8+SpAAhm20i3xdDLu1ig==",
  "amount": 9500,
  "currency": "NGN",
  "reference": "ebook-card-20260101-001",
  "narration": "Purchase of ebook: Keep Me Busy by Anton Warren for Customer: John Smith",
  "businessId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "redirectUrl": "https://bookshelf.com/checkout/complete",
  "customer": {
    "name": "John Smith",
    "email": "john.smith@example.com",
    "phone": "+2348012345678",
    "address": {
      "line1": "12 Elm Street",
      "city": "Lagos",
      "state": "Lagos",
      "countryCode": "NG"
    }
  }
}

Response (direct success — no further authentication required):

{
  "status": 200,
  "message": "Success",
  "data": {
    "authTypeRequired": null,
    "paymentStatus": "SUCCESSFUL",
    "onusReference": "ONUS-CARD-5934827610345-01012026-091230",
    "redirectUrl": null,
    "message": "Card charged successfully"
  }
}

If authTypeRequired is not null, follow the completion flow:

  • PIN — Prompt the customer for their card PIN and call the Complete Card Payment endpoint with cardAuthType: "PIN".
  • OTP — An OTP is sent to the customer's phone. Collect it and call the completion endpoint with cardAuthType: "OTP".
  • THREE_DS — Redirect the customer to the redirectUrl returned in the response. You will receive a webhook notification on completion.

Step 9 — Mobile Money / M-Pesa Kenya (KES 2,000)

Collect payment via M-Pesa for Kenyan customers. An STK push is sent directly to the customer's phone for approval.

9a. Initiate Mobile Money Collection

  • URL: POST https://core-sandbox.payonus.com/api/v1/mobile-money/collection
  • Headers: Authorization: Bearer {access_token}, Content-Type: application/json

Request:

{
  "amount": 2000,
  "reference": "ebook-momo-20260101-001",
  "businessId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "narration": "Purchase of ebook: Keep Me Busy by Anton Warren for Customer: John Smith",
  "momoNetwork": "MPESA_KENYA",
  "customer": {
    "name": "John Smith",
    "email": "john.smith@example.com",
    "phone": "+254712345678",
    "address": {
      "postalCode": "00100",
      "countryCode": "KE",
      "city": "Nairobi"
    }
  }
}

Response:

{
  "status": 200,
  "message": "Success",
  "data": {
    "accountName": "John Smith",
    "mobileNumber": "+254712345678",
    "paymentStatus": "PROCESSING",
    "network": "MPESA_KENYA",
    "amount": 2000,
    "onusReference": "ONUS-MMO-6045938721456-01012026-092445",
    "merchantReference": "ebook-momo-20260101-001",
    "otpRequired": false
  }
}

The customer receives an STK push on their M-Pesa registered phone and approves the charge. If otpRequired is true, collect the OTP from the customer and submit it via the Verify OTP endpoint to complete the transaction.

You will receive a COLLECTION webhook event once the payment settles.


Step 10 — EFT (ZAR 300)

Collect payment via EFT for South African customers. The customer is redirected to their bank's secure portal to authorize the payment.

10a. Fetch EFT Banks

Call this endpoint to display a list of supported South African banks for the customer to choose from:

  • URL: GET https://core-sandbox.payonus.com/api/v1/eft-payment/banks
  • Headers: Authorization: Bearer {access_token}

See EFT Payments for the full response with all supported bank codes.

10b. Initiate EFT Payment

  • URL: POST https://core-sandbox.payonus.com/api/v1/eft-payment
  • Headers: Authorization: Bearer {access_token}, Content-Type: application/json

Request:

{
  "amount": 300,
  "reference": "ebook-eft-20260101-001",
  "narration": "Purchase of ebook: Keep Me Busy by Anton Warren for Customer: John Smith",
  "businessId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "bank": "STANDARD_BANK",
  "customer": {
    "name": "John Smith",
    "email": "john.smith@example.com",
    "phone": "+27712345678",
    "address": {
      "line1": "5 Cape Road",
      "city": "Cape Town",
      "state": "Western Cape",
      "postalCode": "8001",
      "countryCode": "ZA"
    }
  }
}

Response:

{
  "status": 200,
  "message": "Success",
  "data": {
    "onusReference": "ONUS-EFT-7156049832567-01012026-093700",
    "reference": "ebook-eft-20260101-001",
    "amount": 300,
    "redirectUrl": "https://secure.standardbank.co.za/eft/pay/7156049832567",
    "bankName": "Standard Bank",
    "paymentStatus": "PROCESSING"
  }
}

Redirect John to the redirectUrl. He logs into his Standard Bank account and authorizes the payment. You will receive a COLLECTION webhook event once the payment is confirmed.


Part 5: Payin Transaction Status Queries (TSQ)

At any point you can query the current status of a payin transaction using its onusReference.

  • URL: GET https://core-sandbox.payonus.com/api/v1/payment-requests/businesses/{businessId}?onusReference={onus_reference}
  • Headers: Authorization: Bearer {access_token}
GET https://core-sandbox.payonus.com/api/v1/payment-requests/businesses/a1b2c3d4-e5f6-7890-abcd-ef1234567890?onusReference=ONUS-NUB-4823916750234-01012026-090015
{
  "status": 200,
  "message": "Success",
  "data": {
    "onusReference": "ONUS-NUB-4823916750234-01012026-090015",
    "merchantReference": "ebook-dyn-20260101-001",
    "amount": 10000.00,
    "amountPaid": 10000.00,
    "paymentChannel": "BANK_TRANSFER",
    "currency": "NGN",
    "accountNumber": "6023456789",
    "accountName": "BookShelf / John Smith",
    "bankName": "Safe Haven MFB",
    "totalChargedFee": 50.00,
    "paymentStatus": "SUCCESSFUL",
    "narration": "Purchase of ebook: Keep Me Busy by Anton Warren for Customer: John Smith",
    "businessId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "createdDate": "2026-01-01 09:00:15",
    "lastUpdatedDate": "2026-01-01 09:05:22"
  }
}
GET https://core-sandbox.payonus.com/api/v1/payment-requests/businesses/a1b2c3d4-e5f6-7890-abcd-ef1234567890?onusReference=ONUS-CARD-5934827610345-01012026-091230
{
  "status": 200,
  "message": "Success",
  "data": {
    "onusReference": "ONUS-CARD-5934827610345-01012026-091230",
    "merchantReference": "ebook-card-20260101-001",
    "amount": 9500.00,
    "amountPaid": 9500.00,
    "paymentChannel": "CARD",
    "currency": "NGN",
    "totalChargedFee": 47.50,
    "paymentStatus": "SUCCESSFUL",
    "narration": "Purchase of ebook: Keep Me Busy by Anton Warren for Customer: John Smith",
    "businessId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "createdDate": "2026-01-01 09:12:30",
    "lastUpdatedDate": "2026-01-01 09:12:45"
  }
}
GET https://core-sandbox.payonus.com/api/v1/payment-requests/businesses/a1b2c3d4-e5f6-7890-abcd-ef1234567890?onusReference=ONUS-MMO-6045938721456-01012026-092445
{
  "status": 200,
  "message": "Success",
  "data": {
    "onusReference": "ONUS-MMO-6045938721456-01012026-092445",
    "merchantReference": "ebook-momo-20260101-001",
    "amount": 2000.00,
    "amountPaid": 2000.00,
    "paymentChannel": "MOBILE_MONEY",
    "currency": "KES",
    "mobileNumber": "+254712345678",
    "totalChargedFee": 10.00,
    "paymentStatus": "SUCCESSFUL",
    "narration": "Purchase of ebook: Keep Me Busy by Anton Warren for Customer: John Smith",
    "businessId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "createdDate": "2026-01-01 09:24:45",
    "lastUpdatedDate": "2026-01-01 09:26:10"
  }
}
GET https://core-sandbox.payonus.com/api/v1/payment-requests/businesses/a1b2c3d4-e5f6-7890-abcd-ef1234567890?onusReference=ONUS-EFT-7156049832567-01012026-093700
{
  "status": 200,
  "message": "Success",
  "data": {
    "onusReference": "ONUS-EFT-7156049832567-01012026-093700",
    "merchantReference": "ebook-eft-20260101-001",
    "amount": 300.00,
    "amountPaid": 300.00,
    "paymentChannel": "EFT",
    "currency": "ZAR",
    "totalChargedFee": 4.00,
    "paymentStatus": "SUCCESSFUL",
    "narration": "Purchase of ebook: Keep Me Busy by Anton Warren for Customer: John Smith",
    "businessId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "createdDate": "2026-01-01 09:37:00",
    "lastUpdatedDate": "2026-01-01 09:45:30"
  }
}

Part 6: Merchant Settlement (T+1)

It is now January 2, 2026. The platform admin is ready to settle Anton Warren for all purchases made on January 1, 2026.

The settlement flow:

  1. Query wallet balances to confirm funds are available
  2. Initiate a payout for each currency

Step 12 — Fetch Wallets

Check the current wallet balances across all currencies.

  • URL: GET https://core-sandbox.payonus.com/api/v1/merchants/{merchantId}/wallets
  • Headers: Authorization: Bearer {access_token}

Replace {merchantId} with your Merchant ID from the dashboard.

Response:

{
  "status": 200,
  "message": "Success",
  "data": [
    {
      "id": "w1a2b3c4-d5e6-f7g8-h9i0-j1k2l3m4n5o6",
      "currency": "NGN",
      "status": "ACTIVE",
      "availableBalance": 85500.00,
      "lienAmount": 0.00,
      "entityType": "BUSINESS",
      "entityId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "businessName": "BookShelf",
      "payoutAllowed": true,
      "active": true
    },
    {
      "id": "w2b3c4d5-e6f7-g8h9-i0j1-k2l3m4n5o6p7",
      "currency": "KES",
      "status": "ACTIVE",
      "availableBalance": 18000.00,
      "lienAmount": 0.00,
      "entityType": "BUSINESS",
      "entityId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "businessName": "BookShelf",
      "payoutAllowed": true,
      "active": true
    },
    {
      "id": "w3c4d5e6-f7g8-h9i0-j1k2-l3m4n5o6p7q8",
      "currency": "ZAR",
      "status": "ACTIVE",
      "availableBalance": 2700.00,
      "lienAmount": 0.00,
      "entityType": "BUSINESS",
      "entityId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "businessName": "BookShelf",
      "payoutAllowed": true,
      "active": true
    }
  ]
}

The wallets show settled balances across NGN, KES, and ZAR — ready for disbursement.


Step 13 — Bank Transfer Payout (NGN 19,000)

Settle ₦19,000 to Anton Warren's Nigerian bank account.

13a. Name Enquiry

Always verify the recipient's account details before initiating a transfer.

  • URL: POST https://core-sandbox.payonus.com/api/v1/transfer-requests/name-enquiry
  • Headers: Authorization: Bearer {access_token}, Content-Type: application/json

Request:

{
  "institutionCode": "000013",
  "accountNumber": "9999991112",
  "businessId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "currency": "NGN"
}

Response:

{
  "status": 200,
  "message": "Successful",
  "data": {
    "accountNumber": "9999991112",
    "accountName": "Anton Warren",
    "bankCode": "000013",
    "bankName": "GTBank PLC"
  }
}

Sandbox: Account 9999991112 always resolves successfully and produces a SUCCESSFUL transfer result. See Transfers for the full list of sandbox test account numbers.

13b. Initiate Bank Transfer

  • URL: POST https://core-sandbox.payonus.com/api/v1/transfer-requests/bank-transfer
  • Headers: Authorization: Bearer {access_token}, Content-Type: application/json

Request:

{
  "amount": 19000.00,
  "beneficiaryAccountNumber": "9999991112",
  "beneficiaryAccountName": "Anton Warren",
  "beneficiaryBankCode": "000013",
  "reference": "settle-bank-20260102-001",
  "narration": "Settlement of N19,000 to Anton Warren for purchases on January 01, 2026",
  "transferType": "WALLET_TO_BANK_ACCOUNT",
  "countryCode": "NG",
  "currency": "NGN",
  "businessId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "email": "anton.warren@example.com"
}

Response:

{
  "status": 200,
  "message": "Success",
  "data": {
    "paymentStatus": "PENDING",
    "currency": "NGN",
    "amount": 19000.00,
    "fee": 25.00,
    "onusReference": "ONUS-TRNF-8267150943678-02012026-100015",
    "merchantReference": "settle-bank-20260102-001"
  }
}

Store the onusReference for reconciliation. The transfer status will progress from PENDING → SUCCESSFUL (or FAILED). Monitor via webhook or poll the TSQ endpoint.


Step 14 — Mobile Money Payout (KES 3,500)

Settle KES 3,500 to Anton Warren via M-Pesa.

  • URL: POST https://core-sandbox.payonus.com/api/v1/transfer-requests/bank-transfer
  • Headers: Authorization: Bearer {access_token}, Content-Type: application/json

Request:

{
  "beneficiaryAccountNumber": "+254712345678",
  "beneficiaryAccountName": "Anton Warren",
  "momoNetwork": "MPESA_KENYA",
  "transferType": "WALLET_TO_MOMO",
  "amount": 3500,
  "countryCode": "KE",
  "currency": "KES",
  "reference": "settle-momo-20260102-001",
  "narration": "Settlement of KES 3,500 to Anton Warren for purchases on January 01, 2026",
  "businessId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}

Response:

{
  "status": 200,
  "message": "Success",
  "data": {
    "paymentStatus": "PENDING",
    "currency": "KES",
    "amount": 3500,
    "fee": 10,
    "onusReference": "ONUS-TRNF-9378261054789-02012026-101230",
    "merchantReference": "settle-momo-20260102-001"
  }
}


Step 15 — EFT Payout (ZAR 500)

Settle ZAR 500 to Anton Warren's South African bank account via EFT.

15a. Fetch EFT Banks for Payout

  • URL: GET https://core-sandbox.payonus.com/api/v1/banks?key=ZAR
  • Headers: Authorization: Bearer {access_token}

Use this to retrieve valid EFT bank codes for ZAR payouts. See Transfers for the full response.

15b. Initiate EFT Payout

  • URL: POST https://core-sandbox.payonus.com/api/v1/transfer-requests/bank-transfer
  • Headers: Authorization: Bearer {access_token}, Content-Type: application/json

Request:

{
  "beneficiaryAccountNumber": "9876543210",
  "beneficiaryAccountName": "Anton Warren",
  "eftBank": "NEDBANK",
  "transferType": "WALLET_TO_EFT",
  "amount": 500,
  "countryCode": "ZA",
  "currency": "ZAR",
  "reference": "settle-eft-20260102-001",
  "narration": "Settlement of ZAR 500 to Anton Warren for purchases on January 01, 2026",
  "businessId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}

Response:

{
  "status": 200,
  "message": "Success",
  "data": {
    "paymentStatus": "PENDING",
    "currency": "ZAR",
    "amount": 500,
    "fee": 10,
    "onusReference": "ONUS-TRNF-0489372165890-02012026-102445",
    "merchantReference": "settle-eft-20260102-001"
  }
}


Part 7: Payout Transaction Status Queries (TSQ)

Query the status of a payout using its onusReference.

  • URL: GET https://core-sandbox.payonus.com/api/v1/transfer-requests?merchantId={merchantId}&onusReference={onus_reference}
  • Headers: Authorization: Bearer {access_token}
GET https://core-sandbox.payonus.com/api/v1/transfer-requests?merchantId=m1e2r3c4-h5a6-n7t8-9012-345678901234&onusReference=ONUS-TRNF-8267150943678-02012026-100015
{
  "status": 200,
  "message": "Success",
  "data": {
    "pageNo": 1,
    "pageSize": 30,
    "lastPage": 1,
    "totalNumberOfItems": 1,
    "content": [
      {
        "onusReference": "ONUS-TRNF-8267150943678-02012026-100015",
        "merchantReference": "settle-bank-20260102-001",
        "amount": 19000.00,
        "fee": 25.00,
        "currency": "NGN",
        "beneficiaryAccountNumber": "9999991112",
        "beneficiaryAccountName": "Anton Warren",
        "bankCode": "000013",
        "bankName": "GTBank PLC",
        "paymentStatus": "SUCCESSFUL",
        "transferType": "WALLET_TO_BANK_ACCOUNT",
        "narration": "Settlement of N19,000 to Anton Warren for purchases on January 01, 2026",
        "createdDate": "2026-01-02 10:00:15",
        "lastUpdatedDate": "2026-01-02 10:01:30"
      }
    ]
  }
}
GET https://core-sandbox.payonus.com/api/v1/transfer-requests?merchantId=m1e2r3c4-h5a6-n7t8-9012-345678901234&onusReference=ONUS-TRNF-9378261054789-02012026-101230
{
  "status": 200,
  "message": "Success",
  "data": {
    "pageNo": 1,
    "pageSize": 30,
    "lastPage": 1,
    "totalNumberOfItems": 1,
    "content": [
      {
        "onusReference": "ONUS-TRNF-9378261054789-02012026-101230",
        "merchantReference": "settle-momo-20260102-001",
        "amount": 3500.00,
        "fee": 10.00,
        "currency": "KES",
        "beneficiaryAccountNumber": "+254712345678",
        "beneficiaryAccountName": "Anton Warren",
        "paymentStatus": "SUCCESSFUL",
        "paymentChannel": "MOBILE_MONEY",
        "transferType": "WALLET_TO_MOMO",
        "narration": "Settlement of KES 3,500 to Anton Warren for purchases on January 01, 2026",
        "createdDate": "2026-01-02 10:12:30",
        "lastUpdatedDate": "2026-01-02 10:14:00"
      }
    ]
  }
}
GET https://core-sandbox.payonus.com/api/v1/transfer-requests?merchantId=m1e2r3c4-h5a6-n7t8-9012-345678901234&onusReference=ONUS-TRNF-0489372165890-02012026-102445
{
  "status": 200,
  "message": "Success",
  "data": {
    "pageNo": 1,
    "pageSize": 30,
    "lastPage": 1,
    "totalNumberOfItems": 1,
    "content": [
      {
        "onusReference": "ONUS-TRNF-0489372165890-02012026-102445",
        "merchantReference": "settle-eft-20260102-001",
        "amount": 500.00,
        "fee": 10.00,
        "currency": "ZAR",
        "beneficiaryAccountNumber": "9876543210",
        "beneficiaryAccountName": "Anton Warren",
        "paymentStatus": "SUCCESSFUL",
        "paymentChannel": "EFT",
        "transferType": "WALLET_TO_EFT",
        "narration": "Settlement of ZAR 500 to Anton Warren for purchases on January 01, 2026",
        "createdDate": "2026-01-02 10:24:45",
        "lastUpdatedDate": "2026-01-02 10:26:00"
      }
    ]
  }
}

Notes

For full field references, error codes, and additional options for each endpoint, see the individual guides linked throughout this tutorial.