Skip to main content
POST
/
refund-transaction
/
{transaction_id}
Refund transaction
curl --request POST \
  --url http://localhost:5001/refund-transaction/{transaction_id} \
  --header 'X-blnk-key: <api-key>'
import requests

url = "http://localhost:5001/refund-transaction/{transaction_id}"

headers = {"X-blnk-key": "<api-key>"}

response = requests.post(url, headers=headers)

print(response.text)
const options = {method: 'POST', headers: {'X-blnk-key': '<api-key>'}};

fetch('http://localhost:5001/refund-transaction/{transaction_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_PORT => "5001",
CURLOPT_URL => "http://localhost:5001/refund-transaction/{transaction_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"X-blnk-key: <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"
"net/http"
"io"
)

func main() {

url := "http://localhost:5001/refund-transaction/{transaction_id}"

req, _ := http.NewRequest("POST", url, nil)

req.Header.Add("X-blnk-key", "<api-key>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("http://localhost:5001/refund-transaction/{transaction_id}")
.header("X-blnk-key", "<api-key>")
.asString();
require 'uri'
require 'net/http'

url = URI("http://localhost:5001/refund-transaction/{transaction_id}")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)
request["X-blnk-key"] = '<api-key>'

response = http.request(request)
puts response.read_body
Use blnk.transactions.refund to refund a transaction.
1

Call the method

blnk.transactions.refund
response = blnk.transactions.refund(
  "txn_c4e70eb8-e4d6-4e04-a2e2-92a43b969e0c",
)
FieldTypeDescription
transactionIdstrTransaction ID of the applied transaction to refund.
skip_queueboolWhen True, process the refund synchronously instead of queuing.
2

Save the refund transaction ID

Use response.data["transaction_id"] to track the refund. Check parent_transaction to confirm it links to the original transaction.
3

Response

201 Created
{
  "amount": 1250.34,
  "rate": 0,
  "precision": 100,
  "precise_amount": 125034,
  "transaction_id": "txn_c4e70eb8-e4d6-4e04-a2e2-92a43b969e0c",
  "parent_transaction": "txn_c4e70eb8-e4d6-4e04-a2e2-92a43b969e0c",
  "source": "bln_f344b673-e855-4bda-b769-3e94a02c1941",
  "destination": "@WorldUSD",
  "reference": "ref_2ye281ewiu",
  "currency": "USD",
  "description": "Card payment on Stripe",
  "status": "QUEUED",
  "hash": "0b9c25fb5b00d6c71cb4ca87026bf6dc316e63353d3330deb588bd0b3d74dcc0",
  "created_at": "2024-11-26T09:33:35.265582042Z"
}
FieldTypeDescription
transaction_idstrID of the new refund transaction.
parent_transactionstrOriginal transaction being refunded.
sourcestrOriginal destination, now the source of the refund.
destinationstrOriginal source, now the destination of the refund.
statusstrStatus of the refund transaction.

Refunds

Reversal behavior and edge cases.

Refund transaction

HTTP request and response schema.

Need help?

We are very happy to help you make the most of Blnk, regardless of whether it is your first time or you are switching from another tool. To ask questions or discuss issues, please contact us or join our Discord community.