API Reference · Money out

Transfers & Batches

Single and batch bank payouts, made by signed-in team members, with a second approver for large amounts. API keys cannot pay out.

The transfer object

Represents a transfer entity in the rafiqPay system.

FieldType & FlagsDescription
id
string
Transfer ID (trf_...).
amount
string
Payout amount in Naira.
bankName
string
The receiving bank.
status
enum
awaiting_approval | queued | sending | processing | success | failed | cancelled.
Example transfer JSON
transfer example payload
{
  "id": "trf_01J9KANZU",
  "amount": "250000.00",
  "bankName": "GTBank",
  "accountNumber": "0123456789",
  "status": "success"
}

Endpoints & Operations

GET/v1/transfers/banksProposed

List banks

Lists the banks a payout can be sent to.

Request Example
GET /v1/transfers/banks
cURL · v1
curl -X GET "https://api.rafiqpay.net/v1/transfers/banks" \
  -H "Authorization: Bearer rp_test_sk_kanzu_9f8a7b6c5d4e3f2a"
Response (200 OK)
Response payload
{
  "object": "list",
  "data": [
    {
      "bankId": "bank_gtb",
      "name": "Guaranty Trust Bank"
    }
  ],
  "hasMore": false,
  "nextCursor": null
}
GET/v1/transfers/resolve-accountProposed

Resolve an account name

Asks the bank for the name on a 10-digit account number.

Request Example
GET /v1/transfers/resolve-account
cURL · v1
curl -X GET "https://api.rafiqpay.net/v1/transfers/resolve-account" \
  -H "Authorization: Bearer rp_test_sk_kanzu_9f8a7b6c5d4e3f2a"
Response (200 OK)
Response payload
{
  "bankId": "bank_gtb",
  "accountNumber": "0123456789",
  "accountName": "KANZU LEARNING LTD"
}
POST/v1/transfersProposed

Create a transfer

Proposed for API keys. Today a single payout is made by a signed-in team member in the dashboard; a platform with service access uses POST /v1/service/payouts.

Request Example
POST /v1/transfers
cURL · v1
curl -X POST "https://api.rafiqpay.net/v1/transfers" \
  -H "Authorization: Bearer rp_test_sk_kanzu_9f8a7b6c5d4e3f2a" \
  -H "Idempotency-Key: idem_create-transfer_01" \
  -H "Content-Type: application/json" \
  -d '{
  "amount": "250000.00",
  "bankId": "bank_gtb",
  "accountNumber": "0123456789",
  "narration": "Tutor stipend Oct"
}'
Response (200 OK)
Response payload
{
  "id": "trf_01J9KANZU",
  "status": "pending_confirmation"
}
GET/v1/transfers/:idProposed

Retrieve a transfer

Retrieves a transfer.

Request Example
GET /v1/transfers/:id
cURL · v1
curl -X GET "https://api.rafiqpay.net/v1/transfers/:id" \
  -H "Authorization: Bearer rp_test_sk_kanzu_9f8a7b6c5d4e3f2a"
Response (200 OK)
Response payload
{
  "id": "trf_01J9KANZU",
  "status": "succeeded"
}
GET/v1/transfersProposed

List transfers

Lists transfers.

Request Example
GET /v1/transfers
cURL · v1
curl -X GET "https://api.rafiqpay.net/v1/transfers" \
  -H "Authorization: Bearer rp_test_sk_kanzu_9f8a7b6c5d4e3f2a"
Response (200 OK)
Response payload
{
  "object": "list",
  "data": [],
  "hasMore": false,
  "nextCursor": null
}
POST/v1/transfers/batchProposed

Create a transfer batch

Proposed for API keys. Today a batch is made by a signed-in team member in the dashboard, and always waits for a second approver.

Request Example
POST /v1/transfers/batch
cURL · v1
curl -X POST "https://api.rafiqpay.net/v1/transfers/batch" \
  -H "Authorization: Bearer rp_test_sk_kanzu_9f8a7b6c5d4e3f2a" \
  -H "Idempotency-Key: idem_create-batch_01" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "October Payroll",
  "transfers": [
    {
      "amount": "150000.00",
      "bankId": "bank_gtb",
      "accountNumber": "0123456789"
    }
  ]
}'
Response (200 OK)
Response payload
{
  "id": "tba_01",
  "status": "awaiting_approval"
}
GET/v1/transfers/batches/:idProposed

Retrieve a transfer batch

Retrieves a batch.

Request Example
GET /v1/transfers/batches/:id
cURL · v1
curl -X GET "https://api.rafiqpay.net/v1/transfers/batches/:id" \
  -H "Authorization: Bearer rp_test_sk_kanzu_9f8a7b6c5d4e3f2a"
Response (200 OK)
Response payload
{
  "id": "tba_01",
  "status": "approved"
}
GET/v1/transfers/batchesProposed

List transfer batches

Lists transfer batches.

Request Example
GET /v1/transfers/batches
cURL · v1
curl -X GET "https://api.rafiqpay.net/v1/transfers/batches" \
  -H "Authorization: Bearer rp_test_sk_kanzu_9f8a7b6c5d4e3f2a"
Response (200 OK)
Response payload
{
  "object": "list",
  "data": [],
  "hasMore": false,
  "nextCursor": null
}

These events are dispatched to your webhook endpoints when actions occur on this resource: