curl --request POST \
--url https://developersandbox-api.flutterwave.com/transfers/{id}/retries \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"reference": "<string>",
"meta": {},
"callback_url": "https://neue.trf.io"
}
'import requests
url = "https://developersandbox-api.flutterwave.com/transfers/{id}/retries"
payload = {
"reference": "<string>",
"meta": {},
"callback_url": "https://neue.trf.io"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({reference: '<string>', meta: {}, callback_url: 'https://neue.trf.io'})
};
fetch('https://developersandbox-api.flutterwave.com/transfers/{id}/retries', 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://developersandbox-api.flutterwave.com/transfers/{id}/retries",
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([
'reference' => '<string>',
'meta' => [
],
'callback_url' => 'https://neue.trf.io'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://developersandbox-api.flutterwave.com/transfers/{id}/retries"
payload := strings.NewReader("{\n \"reference\": \"<string>\",\n \"meta\": {},\n \"callback_url\": \"https://neue.trf.io\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://developersandbox-api.flutterwave.com/transfers/{id}/retries")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"reference\": \"<string>\",\n \"meta\": {},\n \"callback_url\": \"https://neue.trf.io\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://developersandbox-api.flutterwave.com/transfers/{id}/retries")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"reference\": \"<string>\",\n \"meta\": {},\n \"callback_url\": \"https://neue.trf.io\"\n}"
response = http.request(request)
puts response.read_body{
"message": "<string>",
"data": {
"id": "trf_yuK89vb",
"type": "bank",
"reference": "<string>",
"reversal": {
"reversal_datetime": "2023-11-07T05:31:56Z",
"initial_status": "SUCCESSFUL",
"reconciliation_status": "REVERSED"
},
"narration": "Salary payment for January",
"source_currency": "NGN",
"destination_currency": "EUR",
"amount": {
"value": 3000.44
},
"fee": {
"currency": "NGN",
"value": 10.35
},
"debit_information": {
"currency": "NGN",
"actual_debit_amount": 100.35,
"rate_used": 100.35,
"vat": 100.35
},
"payment_information": {
"proof": "11000224070317345400001414441712312381"
},
"retry": {
"parent_id": "trf_HUQUYb1Sp5CkiIJFebk1Z",
"parent_reference": "flw_z882wFGMjc"
},
"duplicate": {
"parent_id": "trf_HUQUYb1Sp5CkiIJFebk1Z",
"parent_reference": "flw_z882wFGMjc"
},
"disburse_option": {
"date_time": "<string>"
},
"callback_url": "https://example.com/flw/callback",
"provider_response": {
"code": "<string>",
"message": "DISBURSE FAILED: Insufficient wallet balance"
},
"recipient": {
"bank": {
"account_number": "<string>",
"code": "<string>",
"branch": "<string>",
"name": "<string>",
"routing_number": "<string>",
"swift_code": "<string>",
"sort_code": "<string>"
},
"id": "<string>",
"type": "bank",
"name": {
"first": "King",
"middle": "Leo",
"last": "LeBron"
},
"currency": "NGN",
"national_identification": {
"identifier": "FLY5869798686",
"expiration_date": "2029-07-08"
},
"phone": {
"country_code": "234",
"number": "08012345678"
},
"date_of_birth": "<string>",
"email": "hi@flutterwave.com",
"address": {
"city": "New York",
"country": "US",
"line1": "123 Main Street",
"postal_code": "10001",
"state": "New York",
"line2": "Apt 4B"
}
},
"sender": {
"id": "<string>",
"name": {
"first": "King",
"middle": "Leo",
"last": "LeBron"
},
"national_identification": {
"identifier": "FLY5869798686",
"expiration_date": "2029-07-08"
},
"phone": {
"country_code": "234",
"number": "08012345678"
},
"date_of_birth": "<string>",
"email": "cornelius@gmail.com",
"address": {
"city": "New York",
"country": "US",
"line1": "123 Main Street",
"postal_code": "10001",
"state": "New York",
"line2": "Apt 4B"
}
},
"meta": {},
"created_datetime": "2023-11-07T05:31:56Z"
}
}{
"status": "failed",
"error": {
"type": "REQUEST_NOT_VALID",
"code": "10400",
"message": "Request is not valid",
"validation_errors": [
{
"field_name": "amount",
"message": "must not be null"
}
]
}
}{
"status": "failed",
"message": "UNAUTHORIZED",
"error": {
"type": "UNAUTHORIZED",
"code": "10401",
"message": "unauthorized"
}
}{
"status": "failed",
"message": "<string>",
"error": {
"type": "FORBIDDEN",
"code": "10403",
"message": "Forbidden"
}
}{
"status": "failed",
"message": "<string>",
"error": {
"type": "RESOURCE_CONFLICT",
"code": "10409",
"message": "Resource conflict"
}
}Retry or Duplicate a transfer
Retry a failed transfer or duplicate a successful transfer
curl --request POST \
--url https://developersandbox-api.flutterwave.com/transfers/{id}/retries \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"reference": "<string>",
"meta": {},
"callback_url": "https://neue.trf.io"
}
'import requests
url = "https://developersandbox-api.flutterwave.com/transfers/{id}/retries"
payload = {
"reference": "<string>",
"meta": {},
"callback_url": "https://neue.trf.io"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({reference: '<string>', meta: {}, callback_url: 'https://neue.trf.io'})
};
fetch('https://developersandbox-api.flutterwave.com/transfers/{id}/retries', 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://developersandbox-api.flutterwave.com/transfers/{id}/retries",
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([
'reference' => '<string>',
'meta' => [
],
'callback_url' => 'https://neue.trf.io'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://developersandbox-api.flutterwave.com/transfers/{id}/retries"
payload := strings.NewReader("{\n \"reference\": \"<string>\",\n \"meta\": {},\n \"callback_url\": \"https://neue.trf.io\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://developersandbox-api.flutterwave.com/transfers/{id}/retries")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"reference\": \"<string>\",\n \"meta\": {},\n \"callback_url\": \"https://neue.trf.io\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://developersandbox-api.flutterwave.com/transfers/{id}/retries")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"reference\": \"<string>\",\n \"meta\": {},\n \"callback_url\": \"https://neue.trf.io\"\n}"
response = http.request(request)
puts response.read_body{
"message": "<string>",
"data": {
"id": "trf_yuK89vb",
"type": "bank",
"reference": "<string>",
"reversal": {
"reversal_datetime": "2023-11-07T05:31:56Z",
"initial_status": "SUCCESSFUL",
"reconciliation_status": "REVERSED"
},
"narration": "Salary payment for January",
"source_currency": "NGN",
"destination_currency": "EUR",
"amount": {
"value": 3000.44
},
"fee": {
"currency": "NGN",
"value": 10.35
},
"debit_information": {
"currency": "NGN",
"actual_debit_amount": 100.35,
"rate_used": 100.35,
"vat": 100.35
},
"payment_information": {
"proof": "11000224070317345400001414441712312381"
},
"retry": {
"parent_id": "trf_HUQUYb1Sp5CkiIJFebk1Z",
"parent_reference": "flw_z882wFGMjc"
},
"duplicate": {
"parent_id": "trf_HUQUYb1Sp5CkiIJFebk1Z",
"parent_reference": "flw_z882wFGMjc"
},
"disburse_option": {
"date_time": "<string>"
},
"callback_url": "https://example.com/flw/callback",
"provider_response": {
"code": "<string>",
"message": "DISBURSE FAILED: Insufficient wallet balance"
},
"recipient": {
"bank": {
"account_number": "<string>",
"code": "<string>",
"branch": "<string>",
"name": "<string>",
"routing_number": "<string>",
"swift_code": "<string>",
"sort_code": "<string>"
},
"id": "<string>",
"type": "bank",
"name": {
"first": "King",
"middle": "Leo",
"last": "LeBron"
},
"currency": "NGN",
"national_identification": {
"identifier": "FLY5869798686",
"expiration_date": "2029-07-08"
},
"phone": {
"country_code": "234",
"number": "08012345678"
},
"date_of_birth": "<string>",
"email": "hi@flutterwave.com",
"address": {
"city": "New York",
"country": "US",
"line1": "123 Main Street",
"postal_code": "10001",
"state": "New York",
"line2": "Apt 4B"
}
},
"sender": {
"id": "<string>",
"name": {
"first": "King",
"middle": "Leo",
"last": "LeBron"
},
"national_identification": {
"identifier": "FLY5869798686",
"expiration_date": "2029-07-08"
},
"phone": {
"country_code": "234",
"number": "08012345678"
},
"date_of_birth": "<string>",
"email": "cornelius@gmail.com",
"address": {
"city": "New York",
"country": "US",
"line1": "123 Main Street",
"postal_code": "10001",
"state": "New York",
"line2": "Apt 4B"
}
},
"meta": {},
"created_datetime": "2023-11-07T05:31:56Z"
}
}{
"status": "failed",
"error": {
"type": "REQUEST_NOT_VALID",
"code": "10400",
"message": "Request is not valid",
"validation_errors": [
{
"field_name": "amount",
"message": "must not be null"
}
]
}
}{
"status": "failed",
"message": "UNAUTHORIZED",
"error": {
"type": "UNAUTHORIZED",
"code": "10401",
"message": "unauthorized"
}
}{
"status": "failed",
"message": "<string>",
"error": {
"type": "FORBIDDEN",
"code": "10403",
"message": "Forbidden"
}
}{
"status": "failed",
"message": "<string>",
"error": {
"type": "RESOURCE_CONFLICT",
"code": "10409",
"message": "Resource conflict"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
A unique identifier to track this operation. It must be between 12 and 255 characters in length.
12 - 255A unique identifier to prevent duplicate requests. It must be between 12 and 255 characters in length.
12 - 255An optional scenario key that can be used to simulate specific behaviors or test different scenarios within the API. Providing this header allows you to trigger predefined responses or alter data based on the key's value, which can be useful for testing, development, or demonstrating specific functionalities. The key should be a string of 1 to 1000 characters.
Path Parameters
ID of the initial transfer
Body
The action to be performed on the transfer. It can be retry or duplicate.
retry, duplicate A custom identifier to track the transaction, This must be unique across all your transactions.
6 - 42^[a-zA-Z0-9\-]+$Show child attributes
Show child attributes
The URL where the transfer status updates will be sent.
"https://neue.trf.io"
Was this page helpful?