POST {{baseurl}}/transactions/transfer
- Staging
- Production
https://gw.stg.girostack.com/v1
https://gw.prod.girostack.com/v1
Headers
Pass your account’s secret key as the value.
Body Params
Value should be the publicId of the benefactor’s wallet
Value should be the
VirtualAccountValue should be the publicId of the beneficiary’s wallet
Value should be the
VirtualAccountValue should be in kobo. Minimum transfer is 100 naira
Value should be NGN
curl --location --request POST '{{API_BASE_URL}}/transactions/transfer' \
--header 'x-giro-key: {{SECRET_KEY}}' \
--header 'Content-Type: application/json' \
--data '{
"source": "vba-19aeceea-1bd6-4e85-89fa-2ca0b1c57d61",
"sourceType": "VirtualAccount",
"destination": "vba-05bess59-49c4-4651-be00-d524549e2a40",
"destinationType": "VirtualAccount",
"amount": 25000,
"currency": "NGN",
"narration": "Workspace"
}'
const fetch = require("node-fetch");
const url = "{{API_BASE_URL}}/transactions/transfer";
const headers = {
"x-giro-key": "{{SECRET_KEY}}",
"Content-Type": "application/json",
};
const body = JSON.stringify({
source: "vba-19aeceea-1bd6-4e85-89fa-2ca0b1c57d61",
sourceType: "VirtualAccount",
destination: "vba-05bess59-49c4-4651-be00-d524549e2a40",
destinationType: "VirtualAccount",
amount: 25000,
currency: "NGN",
narration: "Workspace",
});
fetch(url, {
method: "POST",
headers: headers,
body: body,
})
.then((response) => response.json())
.then((data) => console.log(data))
.catch((error) => console.error("Error:", error));
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => '{{API_BASE_URL}}/transactions/transfer',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => array(
'x-giro-key: {{SECRET_KEY}}',
'Content-Type: application/json'
),
CURLOPT_POSTFIELDS => json_encode(array(
'source': 'vba-19aeceea-1bd6-4e85-89fa-2ca0b1c57d61',
'sourceType': 'VirtualAccount',
'destination': 'vba-05bess59-49c4-4651-be00-d524549e2a40',
'destinationType': 'VirtualAccount',
'amount': 25000,
'currency': 'NGN',
'narration': 'Workspace'
))
));
$response = curl_exec($curl);
$httpcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if (curl_errno($curl)) {
echo 'Error: ' . curl_error($curl);
} else {
echo "Response Code: $httpcode\n";
echo $response;
}
curl_close($curl);
?>
{
"meta": {
"statusCode": 200,
"success": true,
"message": "successful"
},
"data": {
"_id": "66e2a48a7648f2b0f28e86742",
"publicId": "trx-8d4gt32e00-fc44-4bfe-95a9-348a2r39d09888",
"auth": "65b12bbf512f9932b67f53d7",
"account": "65b12bbf36e38c6bfbe35f95",
"deletedAt": null,
"tags": [],
"currency": "NGN",
"entry": "debit",
"destination": "vba-22seceea-1bd6-4e85-89fa-2ca0b1c57d61",
"live": true,
"destinationType": "VirtualAccount",
"destinationData": {
"id": 4353,
"publicId": "vba-22seceea-1bd6-4e85-89fa-2ca0b1c57d61",
"bankName": "Source MFB",
"bankCode": "090641",
"accountName": "Jane Doe",
"accountNumber": "7086576668",
"processor": "giro",
"clientIds": {}
},
"source": "vba-19aeceea-1bd6-4e85-89fa-2ca0b1c57d61",
"sourceType": "VirtualAccount",
"sourceData": {
"id": 113,
"publicId": "vba-19aeceea-1bd6-4e85-89fa-2ca0b1c57d61",
"bankName": "Source MFB",
"bankCode": "090641",
"accountName": "Giro Expenses",
"accountNumber": "6153332037",
"currency": "NGN",
"reference": null,
"processor": "source"
},
"amount": 25000,
"balance": 5000000,
"clientTransaction": {
"fee": 0,
"actualAmount": 25000
},
"fee": 0,
"feeReference": "fee-73887083e-c99b-42ee-85ec-4577998336454",
"actualAmount": 25000,
"narration": "Workspace",
"reference": "TRF-7107555149278192088783030331355765593680-17261292800944",
"debitReference": null,
"tRef": "GIR-6291285234044666400580911355723887500713-1726129289945",
"linkRef": "TRFLNK-3205567866441776185720553998786846299624-1726129289944",
"status": "pending",
"processor": "giro",
"meta": {
"isThirdParty": false,
"rate": {
"rateId": 1,
"rate": 1,
"sourceCurrency": "NGN",
"destinationCurrency": "NGN",
"convertedAmount": 25000
},
"credit": {
"sourceType": "VirtualAccount",
"sourceData": {
"id": 113,
"publicId": "vba-19aeceea-1bd6-4e85-89fa-2ca0b1c57d61",
"bankName": "Source MFB",
"bankCode": "090641",
"accountName": "Giro Expenses",
"accountNumber": "6153332037",
"currency": "NGN",
"reference": null,
"processor": "source"
},
"source": "vba-00b8fe5c-aeff-45f5-a338-6b082d35714b",
"destination": "vba-22seceea-1bd6-4e85-89fa-2ca0b1c57d61",
"destinationType": "VirtualAccount",
"destinationData": {
"id": 4353,
"publicId": "vba-22seceea-1bd6-4e85-89fa-2ca0b1c57d61",
"bankName": "Source MFB",
"bankCode": "090641",
"accountName": "Jane Doe",
"accountNumber": "7086576668",
"processor": "giro",
"clientIds": {}
},
"amount": 25000,
"currency": "NGN",
"actualAmount": 25000,
"fee": 0,
"narration": "Workspace",
"balance": 5000000
}
},
"currencyPair": "NGN/NGN",
"batchId": null,
"updatedAt": "2024-09-12T08:25:00.610Z",
"createdAt": "2024-09-12T08:21:29.945Z",
"metadata": {}
}
}
{
"meta": {
"statusCode": 400,
"error": {
"statusCode": 400,
"message": "Bad request / Validation error",
"messages": {
"destination": {
"isNotEmpty": "destination should not be empty",
"isString": "destination must be a string"
}
}
}
}
}
{
"meta": {
"statusCode": 404,
"error": {
"statusCode": 404,
"message": "Source not found"
}
}
}
{
"meta": {
"statusCode": 404,
"error": {
"statusCode": 404,
"message": "Destination not found"
}
}
}
{
"meta": {
"statusCode": 403,
"error": {
"statusCode": 403,
"message": "Insufficient fund"
}
}
}