Inter-Bank Transfer (External Bank)
curl --request POST \
--url https://api-production.fossapay.com/api/v1/transfers/fiat/inter-bank \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--data '
{
"customerId": "<string>",
"destinationBankCode": "<string>",
"destinationAccountName": "<string>",
"destinationAccountNumber": "<string>",
"destinationBankName": "<string>",
"reference": "<string>",
"remarks": "<string>",
"amount": 123
}
'import requests
url = "https://api-production.fossapay.com/api/v1/transfers/fiat/inter-bank"
payload = {
"customerId": "<string>",
"destinationBankCode": "<string>",
"destinationAccountName": "<string>",
"destinationAccountNumber": "<string>",
"destinationBankName": "<string>",
"reference": "<string>",
"remarks": "<string>",
"amount": 123
}
headers = {
"x-api-key": "<x-api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
customerId: '<string>',
destinationBankCode: '<string>',
destinationAccountName: '<string>',
destinationAccountNumber: '<string>',
destinationBankName: '<string>',
reference: '<string>',
remarks: '<string>',
amount: 123
})
};
fetch('https://api-production.fossapay.com/api/v1/transfers/fiat/inter-bank', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-production.fossapay.com/api/v1/transfers/fiat/inter-bank",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'customerId' => '<string>',
'destinationBankCode' => '<string>',
'destinationAccountName' => '<string>',
'destinationAccountNumber' => '<string>',
'destinationBankName' => '<string>',
'reference' => '<string>',
'remarks' => '<string>',
'amount' => 123
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-production.fossapay.com/api/v1/transfers/fiat/inter-bank"
payload := strings.NewReader("{\n \"customerId\": \"<string>\",\n \"destinationBankCode\": \"<string>\",\n \"destinationAccountName\": \"<string>\",\n \"destinationAccountNumber\": \"<string>\",\n \"destinationBankName\": \"<string>\",\n \"reference\": \"<string>\",\n \"remarks\": \"<string>\",\n \"amount\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<x-api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api-production.fossapay.com/api/v1/transfers/fiat/inter-bank")
.header("x-api-key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"customerId\": \"<string>\",\n \"destinationBankCode\": \"<string>\",\n \"destinationAccountName\": \"<string>\",\n \"destinationAccountNumber\": \"<string>\",\n \"destinationBankName\": \"<string>\",\n \"reference\": \"<string>\",\n \"remarks\": \"<string>\",\n \"amount\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-production.fossapay.com/api/v1/transfers/fiat/inter-bank")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"customerId\": \"<string>\",\n \"destinationBankCode\": \"<string>\",\n \"destinationAccountName\": \"<string>\",\n \"destinationAccountNumber\": \"<string>\",\n \"destinationBankName\": \"<string>\",\n \"reference\": \"<string>\",\n \"remarks\": \"<string>\",\n \"amount\": 123\n}"
response = http.request(request)
puts response.read_body{
"status": true,
"statusCode": 200,
"message": "Transfer request is being processed",
"data": {
"reference": "TRF-2024-001"
}
}
NGN Transfers
Inter-Bank Transfer (External Bank)
Send NGN from FossaPay to an account at another supported Nigerian bank
POST
/
api
/
v1
/
transfers
/
fiat
/
inter-bank
Inter-Bank Transfer (External Bank)
curl --request POST \
--url https://api-production.fossapay.com/api/v1/transfers/fiat/inter-bank \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--data '
{
"customerId": "<string>",
"destinationBankCode": "<string>",
"destinationAccountName": "<string>",
"destinationAccountNumber": "<string>",
"destinationBankName": "<string>",
"reference": "<string>",
"remarks": "<string>",
"amount": 123
}
'import requests
url = "https://api-production.fossapay.com/api/v1/transfers/fiat/inter-bank"
payload = {
"customerId": "<string>",
"destinationBankCode": "<string>",
"destinationAccountName": "<string>",
"destinationAccountNumber": "<string>",
"destinationBankName": "<string>",
"reference": "<string>",
"remarks": "<string>",
"amount": 123
}
headers = {
"x-api-key": "<x-api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
customerId: '<string>',
destinationBankCode: '<string>',
destinationAccountName: '<string>',
destinationAccountNumber: '<string>',
destinationBankName: '<string>',
reference: '<string>',
remarks: '<string>',
amount: 123
})
};
fetch('https://api-production.fossapay.com/api/v1/transfers/fiat/inter-bank', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-production.fossapay.com/api/v1/transfers/fiat/inter-bank",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'customerId' => '<string>',
'destinationBankCode' => '<string>',
'destinationAccountName' => '<string>',
'destinationAccountNumber' => '<string>',
'destinationBankName' => '<string>',
'reference' => '<string>',
'remarks' => '<string>',
'amount' => 123
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-production.fossapay.com/api/v1/transfers/fiat/inter-bank"
payload := strings.NewReader("{\n \"customerId\": \"<string>\",\n \"destinationBankCode\": \"<string>\",\n \"destinationAccountName\": \"<string>\",\n \"destinationAccountNumber\": \"<string>\",\n \"destinationBankName\": \"<string>\",\n \"reference\": \"<string>\",\n \"remarks\": \"<string>\",\n \"amount\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<x-api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api-production.fossapay.com/api/v1/transfers/fiat/inter-bank")
.header("x-api-key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"customerId\": \"<string>\",\n \"destinationBankCode\": \"<string>\",\n \"destinationAccountName\": \"<string>\",\n \"destinationAccountNumber\": \"<string>\",\n \"destinationBankName\": \"<string>\",\n \"reference\": \"<string>\",\n \"remarks\": \"<string>\",\n \"amount\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-production.fossapay.com/api/v1/transfers/fiat/inter-bank")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"customerId\": \"<string>\",\n \"destinationBankCode\": \"<string>\",\n \"destinationAccountName\": \"<string>\",\n \"destinationAccountNumber\": \"<string>\",\n \"destinationBankName\": \"<string>\",\n \"reference\": \"<string>\",\n \"remarks\": \"<string>\",\n \"amount\": 123\n}"
response = http.request(request)
puts response.read_body{
"status": true,
"statusCode": 200,
"message": "Transfer request is being processed",
"data": {
"reference": "TRF-2024-001"
}
}
Send NGN to a recipient whose account is at a bank outside the bank used for FossaPay NGN wallets.
Use inter-bank transfer for external bank accounts. First confirm the destination bank is supported, perform a bank name enquiry, and calculate the applicable transfer fee.
If both people are FossaPay customers under the same business, use the free Wallet-to-Wallet Transfer endpoint instead.
Request
string
required
API Key for authentication
string
required
UUID of the customer initiating the transfer
string
required
The bank code of the external destination bank
string
required
The name of the destination account holder
string
required
The recipient’s account number at the external destination bank
string
required
The name of the external destination bank
string
required
A unique reference for the transfer
string
required
Additional remarks or description for the transfer
number
required
The amount to transfer
Request Example
curl -X POST https://api-production.fossapay.com/api/v1/transfers/fiat/inter-bank \
-H "x-api-key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"customerId": "550e8400-e29b-41d4-a716-446655440000",
"destinationBankCode": "044",
"destinationAccountName": "JOHN DOE",
"destinationAccountNumber": "1234567890",
"destinationBankName": "ACCESS BANK",
"reference": "TRF-2024-001",
"remarks": "Salary payment",
"amount": 50000.00
}'
const response = await fetch('https://api-production.fossapay.com/api/v1/transfers/fiat/inter-bank', {
method: 'POST',
headers: {
'x-api-key': 'YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
customerId: '550e8400-e29b-41d4-a716-446655440000',
destinationBankCode: '044',
destinationAccountName: 'JOHN DOE',
destinationAccountNumber: '1234567890',
destinationBankName: 'ACCESS BANK',
reference: 'TRF-2024-001',
remarks: 'Salary payment',
amount: 50000.00
})
});
const data = await response.json();
Response
{
"status": true,
"statusCode": 200,
"message": "Transfer request is being processed",
"data": {
"reference": "TRF-2024-001"
}
}
{
"status": false,
"statusCode": 400,
"message": "Bad request",
"error": "Invalid transfer details"
}
{
"status": false,
"statusCode": 404,
"message": "Customer or account not found",
"error": "Destination account not found"
}
{
"status": false,
"statusCode": 500,
"message": "Internal server error",
"error": "Transfer processing failed"
}

