Skip to main content
POST
/
v1
/
local-bank-transfer
Initiate local bank transfer
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: JSON.stringify({
    merchantTransactionId: 'bank_tx_48291',
    senderAccountNo: 'ACC-123456',
    senderAddress: '12 Riverside Drive, Nairobi',
    beneficiaryBankCode: '07000',
    beneficiaryBankName: 'Equity Bank',
    beneficiaryAccountId: '0012345678901',
    beneficiaryAccountCcy: 'KES',
    beneficiaryName: 'Jane Wambui',
    amount: 25000000,
    narration: 'Supplier payment',
    paymentChannel: 'PESALINK',
    beneficiaryBranchCode: '00123',
    paymentPurposeId: 'OTHR'
  })
};

fetch('https://api.fingopay.io/v1/local-bank-transfer', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
{
  "status": "success",
  "message": "Bank transfer initiated successfully",
  "data": {
    "merchantTransactionId": "bank_tx_48291",
    "transactionId": "txn_01j7bankdom"
  }
}

Authorizations

Authorization
string
header
required

Use your API key as a Bearer token. Example: Authorization: Bearer sk_live_...

Headers

Idempotency-Key
string<uuid>

Unique key to safely retry POST without duplicates. Required in live environment.

Body

application/json

Request body for local bank transfers (PesaLink).

merchantTransactionId
string
required

Merchant-side reference used for reconciliation. Accepts 1-64 characters (letters, numbers, dot, underscore, or hyphen).

Required string length: 1 - 64
Example:

"bank_tx_48291"

senderAccountNo
string
required

Sender payout account number funding the transfer. The account number is resolved to an account and validated against its account class.

Example:

"ACC-123456"

senderAddress
string
required

Registered sender address.

Example:

"12 Riverside Drive, Nairobi"

beneficiaryBankCode
string
required

Destination bank code.

Example:

"07000"

beneficiaryBankName
string
required

Destination bank name.

Example:

"Equity Bank"

beneficiaryAccountId
string
required

Destination account number.

Example:

"0012345678901"

beneficiaryAccountCcy
string
required

Destination account currency (ISO 4217).

Example:

"KES"

beneficiaryName
string
required

Destination account holder name.

Example:

"Jane Wambui"

amount
integer
required

Amount in smallest currency unit (cents). Range 1-100,000,000 (KES 0.01-1,000,000.00).

Required range: 1 <= x <= 100000000
Example:

25000000

narration
string
required

Transfer narration. Maximum 140 characters.

Maximum string length: 140
Example:

"Supplier payment"

paymentChannel
enum<string>
required

Payment rail used for the transfer. Only PESALINK is supported.

Available options:
PESALINK
Example:

"PESALINK"

beneficiaryBranchCode
string

Optional branch code. Provide an empty string if not applicable.

Example:

"00123"

paymentPurposeId
string

Optional payment purpose identifier.

Example:

"OTHR"

Response

Accepted — transfer will be processed asynchronously.

status
string
required
Example:

"success"

message
string
required
Example:

"Bank transfer initiated successfully"

data
object
required