Making Payment
Verify Transfer

Verify Transfer

Retrieve detailed information about a specific payout/transfer using its unique reference ID. This endpoint allows you to check transfer status and view complete transfer details.


Endpoint

GET https://api.budpay.com/api/v2/payout/:reference

Sample Request

curl https://api.budpay.com/api/v2/payout/trf_11044f068j1604 \
-H "Authorization: Bearer YOUR_SECRET_KEY" \
-X GET

Sample Response

{
    "status": true,
    "message": "Payout retrieved",
    "data": {
        "id": 15,
        "reference": "trf_11044f068j1604",
        "sessionid": null,
        "currency": "NGN",
        "amount": "100",
        "fee": "10",
        "bank_code": "000013",
        "bank_name": "GUARANTY TRUST BANK",
        "account_number": "0050883605",
        "account_name": "OYENIYI TOLULOPE OYEBIYI",
        "narration": "Test transfer",
        "domain": "test",
        "status": "pending",
        "subaccount": null,
        "created_at": "2022-03-29T01:51:01.000000Z",
        "updated_at": "2022-03-29T01:51:01.000000Z"
    }
}

Try it out

Request Parameters

Path Parameters

ParameterTypeRequiredDescription
referenceStringYesUnique transfer reference ID (e.g., trf_11044f068j1604)

Header Parameters

Field NameDescriptionRequired
AuthorizationBearer token with your secret keyYes

Response Fields

FieldTypeDescription
statusBooleanIndicates if request was successful
messageStringResponse message
data.idIntegerInternal transfer ID
data.referenceStringUnique transfer reference ID
data.sessionidStringSession ID (if applicable)
data.currencyStringTransfer currency (NGN, KES, GHS)
data.amountStringTransfer amount
data.feeStringTransaction fee charged
data.bank_codeStringRecipient bank code
data.bank_nameStringRecipient bank name
data.account_numberStringRecipient account number
data.account_nameStringVerified account holder name
data.narrationStringTransfer description
data.domainStringEnvironment: test or live
data.statusStringTransfer status
data.subaccountStringSubaccount ID (if applicable)
data.created_atStringTransfer creation timestamp
data.updated_atStringLast update timestamp

Transfer Status Values

StatusDescriptionAction Required
pendingTransfer is being processedWait for completion or webhook notification
successTransfer completed successfullyNo action required
failedTransfer failedCheck error details and retry if needed
reversedTransfer was reversedContact support if unexpected

Error Handling

401 Unauthorized

{
    "status": false,
    "message": "Authentication failed"
}

404 Not Found

{
    "status": false,
    "message": "Payout not found"
}

422 Validation Error

{
    "status": false,
    "message": "Invalid reference format"
}

Best Practices

Tip: Always verify transfer status after initiating payouts to ensure successful completion before updating your records.

  1. Store References: Always save transfer reference IDs for future verification
  2. Status Monitoring: Check transfer status periodically for pending transfers
  3. Webhook Integration: Use webhooks for real-time status updates instead of polling
  4. Error Handling: Implement proper handling for failed or reversed transfers
  5. Reconciliation: Use this endpoint for daily reconciliation of transfer batches
  6. Retry Logic: For pending transfers, wait before retrying or checking status again

Verification Workflow

💡

Best Practice: Combine webhook notifications with periodic verification checks for robust transfer tracking.

  1. Initiate Transfer: Create single or bulk payout and store reference
  2. Immediate Check: Optionally verify transfer was queued successfully
  3. Webhook Notification: Receive real-time updates via webhook
  4. Periodic Verification: Check pending transfers periodically
  5. Final Reconciliation: Verify all transfers at end of day/batch

Security Considerations

⚠️

Security: Never expose transfer references or API responses containing account details in client-side code or logs.

  • Server-Side Only: Always verify transfers from your secure backend
  • HTTPS Only: Use secure connections for all verification requests
  • Data Privacy: Handle account details securely and comply with data protection regulations
  • Access Control: Restrict access to transfer verification endpoints

Next Steps