Refund a payment transaction
curl --request POST \
--url https://api-sb.meld.io/payments/transactions/{id}/refund \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"sourceAmount": 0
}
'import requests
url = "https://api-sb.meld.io/payments/transactions/{id}/refund"
payload = { "sourceAmount": 0 }
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({sourceAmount: 0})
};
fetch('https://api-sb.meld.io/payments/transactions/{id}/refund', 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-sb.meld.io/payments/transactions/{id}/refund",
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([
'sourceAmount' => 0
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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://api-sb.meld.io/payments/transactions/{id}/refund"
payload := strings.NewReader("{\n \"sourceAmount\": 0\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<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-sb.meld.io/payments/transactions/{id}/refund")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"sourceAmount\": 0\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sb.meld.io/payments/transactions/{id}/refund")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"sourceAmount\": 0\n}"
response = http.request(request)
puts response.read_body{
"transaction": {
"createdAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"serviceProvider": "<string>",
"sessionId": "<string>",
"status": "<string>",
"transactionType": "<string>",
"updatedAt": "2023-11-07T05:31:56Z",
"accountId": "<string>",
"countryCode": "<string>",
"cryptoDetails": {
"blockchainTransactionId": "<string>",
"chainId": "<string>",
"institution": "<string>",
"networkFee": 123,
"networkFeeInUsd": 123,
"offrampDestinationWalletAddress": "<string>",
"partnerFee": 123,
"partnerFeeInUsd": 123,
"swapFee": 123,
"swapFeeInUsd": 123,
"totalFee": 123,
"totalFeeInUsd": 123,
"transactionFee": 123,
"transactionFeeInUsd": 123,
"walletAddress": "<string>"
},
"customer": {
"accountId": "<string>",
"addresses": [
{
"addressDetails": {
"city": "<string>",
"country": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"lineOne": "<string>",
"lineTwo": "<string>",
"postalCode": "<string>",
"region": "<string>"
},
"type": "BILLING"
}
],
"email": "<string>",
"externalId": "<string>",
"id": "<string>",
"name": {
"firstName": "<string>",
"lastName": "<string>"
},
"phone": "<string>",
"serviceProviders": {},
"status": "<string>"
},
"description": "<string>",
"destinationAmount": 123,
"destinationCurrencyCode": "<string>",
"externalCustomerId": "<string>",
"externalReferenceId": "<string>",
"externalSessionId": "<string>",
"externalSubaccountCustomerId": "<string>",
"fiatAmountInUsd": 123,
"isImported": true,
"isPassthrough": true,
"key": "<string>",
"multiFactorAuthorizationStatus": [
{
"method": "SMS",
"submitted": true,
"successful": true,
"url": "<string>"
}
],
"orderId": "<string>",
"parentPaymentTransactionId": "<string>",
"passthroughReference": "<string>",
"paymentDetails": {
"authAmount": 123,
"captureAmount": 123
},
"paymentMethodType": "<string>",
"serviceProviderCreatedAt": "2023-11-07T05:31:56Z",
"serviceProviderDetails": {},
"serviceProviderTransactionUrl": "<string>",
"serviceTransactionId": "<string>",
"sessionClientTags": {},
"sourceAmount": 123,
"sourceCurrencyCode": "<string>",
"subaccountCustomerId": "<string>"
}
}{
"code": "<string>",
"errors": [
"<string>"
],
"message": "<string>",
"requestId": "<string>",
"serviceProviderDetails": {
"code": "5034",
"message": "Digital currency and blockchain combination is restricted for customer's country"
},
"timestamp": "2026-08-14T09:41:22.482+00:00"
}{
"code": "<string>",
"errors": [
"<string>"
],
"message": "<string>",
"requestId": "<string>",
"serviceProviderDetails": {
"code": "5034",
"message": "Digital currency and blockchain combination is restricted for customer's country"
},
"timestamp": "2026-08-14T09:41:22.482+00:00"
}Transactions
Refund a payment transaction
This is the endpoint to refund a transaction on any of the supported providers. Full as well as partial refunds are supported, so it is not mandatory to inform the total value of the original transaction in the case of a full refund. Note: While the parameters within the body are optional, you must at least pass in a valid JSON body, e.g. .
POST
/
payments
/
transactions
/
{id}
/
refund
Refund a payment transaction
curl --request POST \
--url https://api-sb.meld.io/payments/transactions/{id}/refund \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"sourceAmount": 0
}
'import requests
url = "https://api-sb.meld.io/payments/transactions/{id}/refund"
payload = { "sourceAmount": 0 }
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({sourceAmount: 0})
};
fetch('https://api-sb.meld.io/payments/transactions/{id}/refund', 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-sb.meld.io/payments/transactions/{id}/refund",
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([
'sourceAmount' => 0
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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://api-sb.meld.io/payments/transactions/{id}/refund"
payload := strings.NewReader("{\n \"sourceAmount\": 0\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<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-sb.meld.io/payments/transactions/{id}/refund")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"sourceAmount\": 0\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sb.meld.io/payments/transactions/{id}/refund")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"sourceAmount\": 0\n}"
response = http.request(request)
puts response.read_body{
"transaction": {
"createdAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"serviceProvider": "<string>",
"sessionId": "<string>",
"status": "<string>",
"transactionType": "<string>",
"updatedAt": "2023-11-07T05:31:56Z",
"accountId": "<string>",
"countryCode": "<string>",
"cryptoDetails": {
"blockchainTransactionId": "<string>",
"chainId": "<string>",
"institution": "<string>",
"networkFee": 123,
"networkFeeInUsd": 123,
"offrampDestinationWalletAddress": "<string>",
"partnerFee": 123,
"partnerFeeInUsd": 123,
"swapFee": 123,
"swapFeeInUsd": 123,
"totalFee": 123,
"totalFeeInUsd": 123,
"transactionFee": 123,
"transactionFeeInUsd": 123,
"walletAddress": "<string>"
},
"customer": {
"accountId": "<string>",
"addresses": [
{
"addressDetails": {
"city": "<string>",
"country": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"lineOne": "<string>",
"lineTwo": "<string>",
"postalCode": "<string>",
"region": "<string>"
},
"type": "BILLING"
}
],
"email": "<string>",
"externalId": "<string>",
"id": "<string>",
"name": {
"firstName": "<string>",
"lastName": "<string>"
},
"phone": "<string>",
"serviceProviders": {},
"status": "<string>"
},
"description": "<string>",
"destinationAmount": 123,
"destinationCurrencyCode": "<string>",
"externalCustomerId": "<string>",
"externalReferenceId": "<string>",
"externalSessionId": "<string>",
"externalSubaccountCustomerId": "<string>",
"fiatAmountInUsd": 123,
"isImported": true,
"isPassthrough": true,
"key": "<string>",
"multiFactorAuthorizationStatus": [
{
"method": "SMS",
"submitted": true,
"successful": true,
"url": "<string>"
}
],
"orderId": "<string>",
"parentPaymentTransactionId": "<string>",
"passthroughReference": "<string>",
"paymentDetails": {
"authAmount": 123,
"captureAmount": 123
},
"paymentMethodType": "<string>",
"serviceProviderCreatedAt": "2023-11-07T05:31:56Z",
"serviceProviderDetails": {},
"serviceProviderTransactionUrl": "<string>",
"serviceTransactionId": "<string>",
"sessionClientTags": {},
"sourceAmount": 123,
"sourceCurrencyCode": "<string>",
"subaccountCustomerId": "<string>"
}
}{
"code": "<string>",
"errors": [
"<string>"
],
"message": "<string>",
"requestId": "<string>",
"serviceProviderDetails": {
"code": "5034",
"message": "Digital currency and blockchain combination is restricted for customer's country"
},
"timestamp": "2026-08-14T09:41:22.482+00:00"
}{
"code": "<string>",
"errors": [
"<string>"
],
"message": "<string>",
"requestId": "<string>",
"serviceProviderDetails": {
"code": "5034",
"message": "Digital currency and blockchain combination is restricted for customer's country"
},
"timestamp": "2026-08-14T09:41:22.482+00:00"
}Authorizations
Headers
Dated API version to use for this request, e.g. 2026-02-03.
Example:
"2026-02-03"
Path Parameters
Unique identifier of the transaction to be refunded
Minimum string length:
1Body
application/json
Response
Payment successfully refunded
Payment transaction information
Show child attributes
Show child attributes