Skip to main content
POST
/
transactions
/
{transaction_id}
/
refunds
C#
using Gr4vy;
using Gr4vy.Models.Components;

var sdk = new Gr4vySDK(
    id: "mattilda",
    server: SDKConfig.Server.Sandbox,
    bearerAuthSource: Auth.WithToken(privateKey),
    merchantAccountId: "default"
);

var res = await sdk.Transactions.Refunds.CreateAsync(
    transactionId: "7099948d-7286-47e4-aad8-b68f7eb44591",
    transactionRefundCreate: new TransactionRefundCreate() {}
);

// handle response
package main

import(
"context"
gr4vygo "github.com/gr4vy/gr4vy-go"
"os"
"github.com/gr4vy/gr4vy-go/models/components"
"log"
)

func main() {
ctx := context.Background()

privateKey := "...."
withToken := gr4vy.WithToken(privateKey, []JWTScope{ReadAll, WriteAll}, 60)

s := gr4vy.New(
gr4vy.WithID("mattilda"),
gr4vy.WithServer(gr4vy.ServerSandbox),
gr4vy.WithSecuritySource(withToken),
gr4vy.WithMerchantAccountID("default"),
)

res, err := s.Transactions.Refunds.Create(ctx, "7099948d-7286-47e4-aad8-b68f7eb44591", components.TransactionRefundCreate{})
if err != nil {
log.Fatal(err)
}
if res != nil {
// handle response
}
}
package hello.world;

import java.lang.Exception;
import com.gr4vy.sdk.BearerSecuritySource;
import com.gr4vy.sdk.Gr4vy;
import com.gr4vy.sdk.Gr4vy.AvailableServers;
import org.openapis.openapi.models.components.TransactionRefundCreate;
import org.openapis.openapi.models.errors.*;
import org.openapis.openapi.models.operations.CreateTransactionRefundResponse;

public class Application {

public static void main(String[] args) throws Exception {

Gr4vy sdk = Gr4vy.builder()
.id("mattilda")
.server(AvailableServers.SANDBOX)
.merchantAccountId("default")
.securitySource(new BearerSecuritySource.Builder(privateKey).build())
.build();

CreateTransactionRefundResponse res = sdk.transactions().refunds().create()
.transactionId("7099948d-7286-47e4-aad8-b68f7eb44591")
.transactionRefundCreate(TransactionRefundCreate.builder()
.build())
.call();

if (res.refund().isPresent()) {
// handle response
}
}
}
declare(strict_types=1);

require 'vendor/autoload.php';

use Gr4vy;
use Gr4vy\Auth;


$privateKey = "...";

$sdk = Gr4vy\SDK::builder()
-\u003esetId('mattilda')
-\u003esetServer('sandbox')
-\u003esetSecuritySource(Auth::withToken($privateKey))
-\u003esetMerchantAccountId('default')
-\u003ebuild();

$transactionRefundCreate = new Gr4vy\TransactionRefundCreate();

$response = $sdk->transactions->refunds->create(
transactionId: '7099948d-7286-47e4-aad8-b68f7eb44591',
transactionRefundCreate: $transactionRefundCreate

);

if ($response->refund !== null) {
// handle response
}
from gr4vy import Gr4vy, auth
import os


with Gr4vy(
id="mattilda",
server="production",
merchant_account_id="default",
bearer_auth=auth.with_token(open("./private_key.pem").read())
) as g_client:

res = g_client.transactions.refunds.create(transaction_id="7099948d-7286-47e4-aad8-b68f7eb44591")

# Handle response
print(res)
import { Gr4vy } from "@gr4vy/sdk";

const gr4vy = new Gr4vy({
server: "sandbox",
id: "mattilda",
bearerAuth: withToken({
privateKey: fs.readFileSync("private_key.pem", "utf8"),
}),
});

async function run() {
const result = await gr4vy.transactions.refunds.create({}, "7099948d-7286-47e4-aad8-b68f7eb44591");

console.log(result);
}

run();
{
  "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "transaction_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "currency": "<string>",
  "amount": 49999999,
  "target_type": "payment-method",
  "reconciliation_id": "<string>",
  "transaction_reconciliation_id": "<string>",
  "created_at": "2023-11-07T05:31:56Z",
  "updated_at": "2023-11-07T05:31:56Z",
  "type": "refund",
  "payment_service_refund_id": "refund_xYqd43gySMtori",
  "reason": "Refund due to user request.",
  "target_id": "07e70d14-a0c0-4ff5-bd4a-509959af0e4d",
  "external_identifier": "refund-12345",
  "transaction_external_identifier": "transaction-12345",
  "creator": {
    "email_address": "jhon.doe@gr4vy.com",
    "id": "07e70d14-a0c0-4ff5-bd4a-509959af0e4d",
    "name": "Jhon Doe"
  }
}
{
"type": "error",
"code": "bad_request",
"status": 400,
"message": "Generic error",
"details": []
}
{
"type": "error",
"code": "unauthorized",
"status": 401,
"message": "No valid API authentication found",
"details": []
}
{
"type": "error",
"code": "forbidden",
"status": 403,
"message": "Generic error",
"details": []
}
{
"type": "error",
"code": "not_found",
"status": 404,
"message": "The resource could not be found",
"details": []
}
{
"type": "error",
"code": "method_not_allowed",
"status": 405,
"message": "Method Not Allowed",
"details": []
}
{
"type": "error",
"code": "duplicate_record",
"status": 409,
"message": "Generic error",
"details": []
}
{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}
{
"type": "error",
"code": "too_early",
"status": 425,
"message": "Generic error",
"details": []
}
{
"type": "error",
"code": "too_many_requests",
"status": 429,
"message": "Generic error",
"details": []
}
{
"type": "error",
"code": "server_error",
"status": 500,
"message": "Request could not be processed",
"details": []
}
{
"type": "error",
"code": "bad_gateway",
"status": 502,
"message": "Request could not be processed",
"details": []
}
{
"type": "error",
"code": "gateway_timeout",
"status": 504,
"message": "Request could not be processed",
"details": []
}
This endpoint requires the transactions.write scope.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Headers

x-gr4vy-merchant-account-id
string | null

The ID of the merchant account to use for this request.

Example:

"default"

Path Parameters

transaction_id
string<uuid>
required

The ID of the transaction

Example:

"7099948d-7286-47e4-aad8-b68f7eb44591"

Body

application/json
amount
integer | null

The amount to refund, in the smallest currency unit (e.g., cents). If omitted, a full refund will be requested.

Required range: 0 <= x <= 99999999
Example:

1299

reason
string | null

An optional reason to attach extra context to the refund request.

Maximum string length: 100
Example:

"Refund due to user request."

external_identifier
string | null

An external identifier that can be used to match the refund against your own records.

Required string length: 1 - 300
Example:

"refund-12345"

Response

Successful Response

id
string<uuid>
required

The unique identifier for the refund.

Example:

"6a1d4e46-14ed-4fe1-a45f-eff4e025d211"

transaction_id
string<uuid>
required

The ID of the transaction associated with this refund.

Example:

"7099948d-7286-47e4-aad8-b68f7eb44591"

status
enum<string>
required

The status of the refund.

Available options:
processing,
succeeded,
failed,
declined,
voided
Example:

"succeeded"

currency
string
required

The ISO 4217 currency code for this refund. Will always match that of the associated transaction.

Pattern: ^[A-Z]{3}$
Examples:

"EUR"

"GBP"

"MXN"

amount
integer
required

The amount of this refund, in the smallest currency unit (for example, cents or pence).

Required range: 0 <= x <= 99999999
Example:

1299

target_type
enum<string>
required

The type of the instrument that was refunded.

Available options:
payment-method
Example:

"payment-method"

reconciliation_id
string
required

The base62 encoded refund ID. This represents a shorter version of this refund's id which is sent to payment services, anti-fraud services, and other connectors. You can use this ID to reconcile a payment service's refund against our system.

Example:

"7jZXl4gBUNl0CnaLEnfXbt"

transaction_reconciliation_id
string
required

The base62 encoded transaction ID. This represents a shorter version of the related transaction's id which is sent to payment services, anti-fraud services, and other connectors. You can use this ID to reconcile a payment service's transaction against our system.

Example:

"aLEnfXbt7jZXl4gBUNl0Cn"

created_at
string<date-time>
required

The date this refund was created at.

Example:

"2013-07-16T19:23:00.000+00:00"

updated_at
string<date-time>
required

The date this refund was last updated at.

Example:

"2013-07-16T19:23:00.000+00:00"

type
string
default:refund

Always refund.

Allowed value: "refund"
Example:

"refund"

payment_service_refund_id
string | null

The payment service's unique ID for the refund.

Required string length: 1 - 300
Example:

"refund_xYqd43gySMtori"

reason
string | null

The reason for this refund. Could be a multiline string.

Example:

"Refund due to user request."

target_id
string<uuid> | null

The optional ID of the instrument that was refunded. This may be null if the instrument was not stored.

Example:

"07e70d14-a0c0-4ff5-bd4a-509959af0e4d"

external_identifier
string | null

An external identifier that can be used to match the refund against your own records.

Example:

"refund-12345"

transaction_external_identifier
string | null

An external identifier that can be used to match the transaction against your own records.

Example:

"transaction-12345"

creator
Creator · object | null

The user that created this resource

Example:
{
"email_address": "jhon.doe@gr4vy.com",
"id": "07e70d14-a0c0-4ff5-bd4a-509959af0e4d",
"name": "Jhon Doe"
}