1. Overdraft
Virtual Account Services
  • Introduction
  • Terminologies
  • Webhooks
  • Authentication
  • Account
    • Create Account
      POST
    • Rename Account
      POST
    • Balance Inquiry
      GET
    • Create Bulk Accounts
      POST
    • List Accounts
      GET
  • Transaction
    • Credit Account
      POST
    • Debit Account
      POST
    • Credit Account [Agency Banking]
      POST
    • Debit Account [Agency Banking]
      POST
    • Transaction Query
      GET
    • Transaction Details
      GET
    • Transaction History
      GET
  • Transfer
    • Get Institutions
      GET
    • Name Inquiry
      POST
    • Interbank Transfer
      POST
    • Interbank Transfer [Sync]
      POST
    • Transfer Query
      GET
    • Transfer Enquiry
      GET
    • Virtual Account Intrabank Transfer
      POST
    • Core Banking Intrabank Transfer
      POST
    • Collection Accounts Intrabank Transfer
      POST
  • Invoice
    • Create Invoice
    • Get Invoice Detail
    • Get Invoice Status
    • List Merchant Invoices
  • Refunds
    • Initiate Refund
    • Get Refund Status
    • Get Refunds
  • Notifications
    • Notification
    • Send Notification
  • Overdraft
    • Draw Overdraft
      POST
  • Merchant
    • Account
      • Get Account
      • Activate Sub Ledger For Merchant
      • Get SubLedger Callback Urls
      • Set SubLedger Callback Urls
      • Get Collection Accounts
    • Transfer
      • Get Transfer History
      • Get Subledger transfers
      • Get Transfer Details
      • Name Inquiry
    • Refund
      • Refund Details
  • Admin
    • Accounting
      • Get GL Accounts
      • Get Classification Codes
    • Dashboard
      • Dashboard Summary
      • Dashboard Transactions
      • Dashboard Transaction Details
    • Group Codes
      • Get Group Codes
      • Set Collection Account
      • Create Group Code
    • Reporting
      • Get Report Types
      • Get Report Parameters
      • Create Report
      • Get Reports
      • Get Reports Details
  1. Overdraft

Draw Overdraft

Developing
POST
/va/overdraft/draw

Draw a subledger overdraft#

Obtains an overdraft: debits a subledger overdraft account and credits any other subledger account in the system.

Request body#

FieldTypeRequiredDescription
overdraftAccountCodestringYesUnique code of the subledger overdraft account to draw on, for example POWER_1. Shown on the Subledger Overdraft page.
beneficiaryAccountIDstringYesSubledger account to credit. It must exist and must not be the settlement subledger of an overdraft account.
amountnumber (decimal)YesAmount to draw. Minimum 0.01.
transactionReferencestringNoYour own unique reference. Sending the same reference again returns the original draw instead of drawing twice. If omitted, one is generated.
narrationstringNoNarration for the transaction. Defaults to Overdraft - <account name>.

Response#

200 OK#

FieldTypeDescription
accountCodestringThe overdraft account that was drawn on.
transRefstringReference of the draw (your transactionReference when you sent one).
amountnumberAmount drawn.
outstandingBalancenumberWhat the overdraft account owes after the draw. 0 while it is in credit.
creditBalancenumberCredit the overdraft account still holds after the draw. 0 while it owes.
messagestringOverdraft drawn, or Overdraft already drawn with this reference when the request repeated an earlier transactionReference.

How a draw behaves#

Credit is spent first. If the overdraft account has been funded (it holds credit), the draw uses that credit before any overdraft. Only the remainder is overdraft, and only that remainder increases outstandingBalance.
Limit. A draw is allowed up to the account's credit plus its overdraft limit.
A limit of 0 means no overdraft: the account must be funded first, and a draw above its credit is rejected.
An account with no limit accepts any amount.
Idempotency. Re-sending the same transactionReference for the same account returns the original result with the message Overdraft already drawn with this reference and does not draw again. Using a reference that belongs to a different account or to a settlement is rejected.
Beneficiary notification. The beneficiary subledger is credited and its webhook is called as for a NIP credit transfer.
Repayment is not part of this API. An overdraft is settled by crediting the account's settlement subledger (or from the Subledger Overdraft page); see the settlement flow in the admin UI.

Errors#

The gateway returns the standard TPGateway error body. TPBackEnd's own messages are passed through in detailedMessage. The exact status code for a TPBackEnd rejection follows TPBackEnd.
{
  "error": "...",
  "detailedMessage": "...",
  "httpStatusCode": 400,
  "errorCode": "...",
  "parameter": "...",
  "value": "...",
  "errors": []
}
CauseMessage (or part of it)
Missing or invalid field`overdraftAccountCode` is required, `beneficiaryAccountID` is required, `amount` is required, Amount must be 0.01 or greater
No client id on the request`clientID` is required
Client has no permission row for this accountNo Access To Core Banking (no rows at all) or Access Denied (no row covering this account)
Feature switched offSubledger Overdraft Is Disabled
Unknown overdraft accountSubledger Overdraft Account `<code>` Not Found
Account not activeSubledger Overdraft Account Is Not Active
Beneficiary is an overdraft settlement subledgerA Subledger Overdraft Settlement Subledger Cannot Be The Beneficiary
Beneficiary does not existThe subledger system's own not-found error
Over the overdraft limitOverdraft Limit Exceeded. Available: <amount>
Zero-limit account without enough creditInsufficient funds. This account does not allow overdraft. Available: <amount>
Reference already used by another account or a settlementReference `<transactionReference>` Has Already Been Used

Request

Body Params application/jsonRequired

Example
{
    "overdraftAccountCode": "POWER_1",
    "beneficiaryAccountID": "0000000128",
    "amount": 500000.00,
    "transactionReference": "PAYROLL-2026-10-001",
    "narration": "October payroll float"
}

Request Code Samples

Shell
JavaScript
Java
Swift
Go
PHP
Python
HTTP
C
C#
Objective-C
Ruby
OCaml
Dart
R
Request Request Example
Shell
JavaScript
Java
Swift
curl --location '/va/overdraft/draw' \
--header 'Content-Type: application/json' \
--data '{
    "overdraftAccountCode": "POWER_1",
    "beneficiaryAccountID": "0000000128",
    "amount": 500000.00,
    "transactionReference": "PAYROLL-2026-10-001",
    "narration": "October payroll float"
}'

Responses

🟢200Success
application/json
Bodyapplication/json

Examples
{
    "accountCode": "ADEPT_1",
    "transRef": "PAYROLL-2026-10-001",
    "amount": 500000.00,
    "outstandingBalance": 1500000.00,
    "creditBalance": 0,
    "message": "Overdraft drawn"
}
Modified at 2026-10-06 04:42:49
Previous
Send Notification
Next
Get Account
Built with