Transfers
Account-to-account fund transfer and transfer reversal. Both accounts must belong to the same institution (intra-institution transfer).
Transfer Funds
POST
/api/ssb/accountservices/{version}/transactions/transfers
Transfers funds between two accounts within the same institution. paymentInstrument is the source (debit); beneficiaryInstrument is the destination (credit).
Operation ID: Transfers
balances Is an Object, Not an Array
The transfer response returns balances as an object with two keys: balances.paymentInstrument[] (source) and balances.beneficiaryInstrument[] (destination). All other endpoints return balances as a flat array.
transaction.type
string
Yes
Must be:
TRANSFER
head.description
string
Yes
Transaction description.
transaction.rrn
string
Yes
12-digit RRN.
deviceInfo.terminalId
string
Yes
ATM terminal ID.
deviceInfo.terminalLoc
string
Yes
Terminal location.
deviceInfo.acceptorId
string
Yes
Acceptor ID.
paymentInstrument.account.id
string
Yes
Source account to debit.
institution.id
string
Yes
Source institution ID.
beneficiary.institutionId
string
Yes
Destination institution ID. Must match
institution.id.
beneficiaryInstrument.account.id
string
Yes
Destination account to credit.
amount.amount
number
Yes
Transfer amount.
amount.currencyCode
string
Yes
ISO 4217 currency code.
json
{
"head": {
"acquirerId": "10001",
"description": "ATM Account Transfer"
},
"transaction": {
"rrn": "250603001060",
"date": "20260603",
"type": "TRANSFER"
},
"deviceInfo": {
"terminalId": "ATM00001",
"terminalLoc": "100 Main St, New York NY 10001",
"acceptorId": "ACCEPTOR000001"
},
"paymentInstrument": {
"account": { "id": "DDA1234567890" },
"card": { "pan": "543100XXXXXXXXX0781" }
},
"institution": { "id": "000100" },
"beneficiary": { "institutionId": "000100" },
"beneficiaryInstrument": { "account": { "id": "SAV9876543210" } },
"amount": { "amount": 500, "currencyCode": "USD" }
}
balances.paymentInstrument[]
array
Updated balances for the source account.
balances.beneficiaryInstrument[]
array
Updated balances for the destination account.
status.responseCode
string
"000" = transfer completed.
status.authId
string
Authorization ID.
branch.*
object
Branch details.
json — 200 OK
{
"transaction": {
"rrn": "250603001060",
"type": "TRANSFER"
},
"paymentInstrument": {
"account": { "id": "DDA1234567890" }
},
"beneficiaryInstrument": {
"account": { "id": "SAV9876543210" }
},
"institution": { "id": "000100" },
"beneficiary": { "institutionId": "000100" },
"amount": { "amount": 500, "currencyCode": "USD" },
"branch": {
"id": "BR-001",
"name": "Main Street Branch",
"address": "100 Main Street, New York, NY 10001"
},
"balances": {
"paymentInstrument": [
{ "type": "Available", "amount": 4321.50, "currencyCode": "USD" }
],
"beneficiaryInstrument": [
{ "type": "Available", "amount": 12900.00, "currencyCode": "USD" }
]
},
"status": { "authId": "AUTH06", "responseCode": "000" }
}
Transfer Reversal
POST
/api/ssb/accountservices/{version}/transactions/transfers/reverse
Reverses a previously completed transfer. Credits the source account and debits the destination account for the reversal amount.
Operation ID: TransfersReverse
transaction.type
string
Yes
Must be:
TRANSFERREVERSAL
transaction.rrn
string
Yes
New 12-digit RRN for this reversal.
paymentInstrument.account.id
string
Yes
Original source account.
beneficiaryInstrument.account.id
string
Yes
Original destination account.
institution.id
string
Yes
Institution ID.
beneficiary.institutionId
string
Yes
Beneficiary institution ID.
amount.amount
number
Yes
Reversal amount.
reverseInfo.reasonCode
string
Yes
Reversal reason. Example:
TRANSFER_ERROR
reverseInfo.amount
number
Yes
Amount to reverse.
json
{
"head": {
"acquirerId": "10001",
"description": "ATM Transfer Reversal"
},
"transaction": {
"rrn": "250603001070",
"date": "20260603",
"type": "TRANSFERREVERSAL"
},
"deviceInfo": {
"terminalId": "ATM00001",
"terminalLoc": "100 Main St",
"acceptorId": "ACCEPTOR000001"
},
"paymentInstrument": {
"account": { "id": "DDA1234567890" }
},
"beneficiaryInstrument": {
"account": { "id": "SAV9876543210" }
},
"beneficiary": { "institutionId": "000100" },
"institution": { "id": "000100" },
"amount": { "amount": 500, "currencyCode": "USD" },
"reverseInfo": { "reasonCode": "TRANSFER_ERROR", "amount": 500 }
}
balances[]
array
Balances after reversal (flat array on this endpoint).
status.responseCode
string
"000" = reversal successful.
status.authId
string
Authorization ID for this reversal.
json — 200 OK
{
"transaction": {
"rrn": "250603001070",
"type": "TRANSFERREVERSAL"
},
"paymentInstrument": {
"account": { "id": "DDA1234567890" }
},
"beneficiaryInstrument": {
"account": { "id": "SAV9876543210" }
},
"balances": [
{ "type": "Available", "amount": 4821.50, "currencyCode": "USD" }
],
"status": { "authId": "AUTH07", "responseCode": "000" }
}