using Gr4vy;
using Gr4vy.Models.Components;
var sdk = new Gr4vySDK(
id: "example",
server: SDKConfig.Server.Sandbox,
bearerAuthSource: Auth.WithToken(privateKey),
merchantAccountId: "default"
);
var res = await sdk.Transactions.Refunds.All.CreateAsync(
transactionId: "7099948d-7286-47e4-aad8-b68f7eb44591",
transactionRefundAllCreate: new TransactionRefundAllCreate() {
Reason = "Refund due to user request.",
ExternalIdentifier = "refund-12345",
}
);
// handle responsepackage main
import(
"context"
"os"
gr4vygo "github.com/gr4vy/gr4vy-go"
"github.com/gr4vy/gr4vy-go/models/components"
"log"
)
func main() {
ctx := context.Background()
s := gr4vygo.New(
gr4vygo.WithMerchantAccountID("default"),
gr4vygo.WithSecurity(os.Getenv("GR4VY_BEARER_AUTH")),
)
res, err := s.Transactions.Refunds.All.Create(ctx, "7099948d-7286-47e4-aad8-b68f7eb44591", nil, &components.TransactionRefundAllCreate{
Reason: gr4vygo.Pointer("Refund due to user request."),
ExternalIdentifier: gr4vygo.Pointer("refund-12345"),
})
if err != nil {
log.Fatal(err)
}
if res != nil {
// handle response
}
}package hello.world;
import com.gr4vy.sdk.Gr4vy;
import com.gr4vy.sdk.models.components.TransactionRefundAllCreate;
import com.gr4vy.sdk.models.errors.*;
import com.gr4vy.sdk.models.operations.CreateFullTransactionRefundResponse;
import java.lang.Exception;
public class Application {
public static void main(String[] args) throws Exception {
Gr4vy sdk = Gr4vy.builder()
.merchantAccountId("default")
.bearerAuth(System.getenv().getOrDefault("BEARER_AUTH", ""))
.build();
CreateFullTransactionRefundResponse res = sdk.transactions().refunds().all().create()
.transactionId("7099948d-7286-47e4-aad8-b68f7eb44591")
.transactionRefundAllCreate(TransactionRefundAllCreate.builder()
.reason("Refund due to user request.")
.externalIdentifier("refund-12345")
.build())
.call();
if (res.refunds().isPresent()) {
System.out.println(res.refunds().get());
}
}
}declare(strict_types=1);
require 'vendor/autoload.php';
use Gr4vy;
$sdk = Gr4vy\SDK::builder()
->setId('example')
->setServer('sandbox')
->setSecuritySource(Auth::withToken($privateKey))
->setMerchantAccountId('default')
->build();
$transactionRefundAllCreate = new Gr4vy\TransactionRefundAllCreate(
reason: 'Refund due to user request.',
externalIdentifier: 'refund-12345',
);
$response = $sdk->transactions->refunds->all->create(
transactionId: '7099948d-7286-47e4-aad8-b68f7eb44591',
transactionRefundAllCreate: $transactionRefundAllCreate
);
if ($response->refunds !== null) {
// handle response
}from gr4vy import Gr4vy
import os
with Gr4vy(
id="example",
server="sandbox",
merchant_account_id="default",
bearer_auth=auth.with_token(open("./private_key.pem").read())
) as g_client:
res = g_client.transactions.refunds.all.create(transaction_id="7099948d-7286-47e4-aad8-b68f7eb44591", reason="Refund due to user request.", external_identifier="refund-12345")
# Handle response
print(res)import { Gr4vy, withToken } from "@gr4vy/sdk";
import fs from "fs";
const gr4vy = new Gr4vy({
id: "example",
server: "sandbox",
merchantAccountId: "default",
bearerAuth: withToken({
privateKey: fs.readFileSync("private_key.pem", "utf8"),
}),
});
async function run() {
const result = await gr4vy.transactions.refunds.all.create("7099948d-7286-47e4-aad8-b68f7eb44591");
console.log(result);
}
run();curl --request POST \
--url https://api.sandbox.{id}.gr4vy.app/transactions/{transaction_id}/refunds/all \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"reason": "Refund due to user request.",
"external_identifier": "refund-12345"
}
'{
"items": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"transaction_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"currency": "<string>",
"amount": 49999999,
"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"
},
"error_code": "service_error",
"raw_response_code": "E104",
"raw_response_description": "Missing redirect URL"
}
],
"limit": 20,
"next_cursor": "ZXhhbXBsZTE",
"previous_cursor": "Xkjss7asS"
}{
"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": [],
"resource_id": "cdc70639-cb9c-4222-a73f-b8ce39f7821b"
}{
"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": []
}Create batch transaction refund
Create a refund for all instruments on a transaction.
using Gr4vy;
using Gr4vy.Models.Components;
var sdk = new Gr4vySDK(
id: "example",
server: SDKConfig.Server.Sandbox,
bearerAuthSource: Auth.WithToken(privateKey),
merchantAccountId: "default"
);
var res = await sdk.Transactions.Refunds.All.CreateAsync(
transactionId: "7099948d-7286-47e4-aad8-b68f7eb44591",
transactionRefundAllCreate: new TransactionRefundAllCreate() {
Reason = "Refund due to user request.",
ExternalIdentifier = "refund-12345",
}
);
// handle responsepackage main
import(
"context"
"os"
gr4vygo "github.com/gr4vy/gr4vy-go"
"github.com/gr4vy/gr4vy-go/models/components"
"log"
)
func main() {
ctx := context.Background()
s := gr4vygo.New(
gr4vygo.WithMerchantAccountID("default"),
gr4vygo.WithSecurity(os.Getenv("GR4VY_BEARER_AUTH")),
)
res, err := s.Transactions.Refunds.All.Create(ctx, "7099948d-7286-47e4-aad8-b68f7eb44591", nil, &components.TransactionRefundAllCreate{
Reason: gr4vygo.Pointer("Refund due to user request."),
ExternalIdentifier: gr4vygo.Pointer("refund-12345"),
})
if err != nil {
log.Fatal(err)
}
if res != nil {
// handle response
}
}package hello.world;
import com.gr4vy.sdk.Gr4vy;
import com.gr4vy.sdk.models.components.TransactionRefundAllCreate;
import com.gr4vy.sdk.models.errors.*;
import com.gr4vy.sdk.models.operations.CreateFullTransactionRefundResponse;
import java.lang.Exception;
public class Application {
public static void main(String[] args) throws Exception {
Gr4vy sdk = Gr4vy.builder()
.merchantAccountId("default")
.bearerAuth(System.getenv().getOrDefault("BEARER_AUTH", ""))
.build();
CreateFullTransactionRefundResponse res = sdk.transactions().refunds().all().create()
.transactionId("7099948d-7286-47e4-aad8-b68f7eb44591")
.transactionRefundAllCreate(TransactionRefundAllCreate.builder()
.reason("Refund due to user request.")
.externalIdentifier("refund-12345")
.build())
.call();
if (res.refunds().isPresent()) {
System.out.println(res.refunds().get());
}
}
}declare(strict_types=1);
require 'vendor/autoload.php';
use Gr4vy;
$sdk = Gr4vy\SDK::builder()
->setId('example')
->setServer('sandbox')
->setSecuritySource(Auth::withToken($privateKey))
->setMerchantAccountId('default')
->build();
$transactionRefundAllCreate = new Gr4vy\TransactionRefundAllCreate(
reason: 'Refund due to user request.',
externalIdentifier: 'refund-12345',
);
$response = $sdk->transactions->refunds->all->create(
transactionId: '7099948d-7286-47e4-aad8-b68f7eb44591',
transactionRefundAllCreate: $transactionRefundAllCreate
);
if ($response->refunds !== null) {
// handle response
}from gr4vy import Gr4vy
import os
with Gr4vy(
id="example",
server="sandbox",
merchant_account_id="default",
bearer_auth=auth.with_token(open("./private_key.pem").read())
) as g_client:
res = g_client.transactions.refunds.all.create(transaction_id="7099948d-7286-47e4-aad8-b68f7eb44591", reason="Refund due to user request.", external_identifier="refund-12345")
# Handle response
print(res)import { Gr4vy, withToken } from "@gr4vy/sdk";
import fs from "fs";
const gr4vy = new Gr4vy({
id: "example",
server: "sandbox",
merchantAccountId: "default",
bearerAuth: withToken({
privateKey: fs.readFileSync("private_key.pem", "utf8"),
}),
});
async function run() {
const result = await gr4vy.transactions.refunds.all.create("7099948d-7286-47e4-aad8-b68f7eb44591");
console.log(result);
}
run();curl --request POST \
--url https://api.sandbox.{id}.gr4vy.app/transactions/{transaction_id}/refunds/all \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"reason": "Refund due to user request.",
"external_identifier": "refund-12345"
}
'{
"items": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"transaction_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"currency": "<string>",
"amount": 49999999,
"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"
},
"error_code": "service_error",
"raw_response_code": "E104",
"raw_response_description": "Missing redirect URL"
}
],
"limit": 20,
"next_cursor": "ZXhhbXBsZTE",
"previous_cursor": "Xkjss7asS"
}{
"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": [],
"resource_id": "cdc70639-cb9c-4222-a73f-b8ce39f7821b"
}{
"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": []
}transactions.write scope.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
The ID of the merchant account to use for this request.
"default"
A unique key that identifies this request. Providing this header will make this an idempotent request. We recommend using V4 UUIDs, or another random string with enough entropy to avoid collisions.
"request-12345"
Path Parameters
The ID of the transaction
"7099948d-7286-47e4-aad8-b68f7eb44591"
Body
An optional reason to attach extra context to the refund requests.
100"Refund due to user request."
An external identifier that can be used to match the refunds against your own records.
1 - 300"refund-12345"
Response
Successful Response
A list of items returned for this request.
Show child attributes
Show child attributes
The number of items for this page.
1 <= x <= 10020
The cursor pointing at the next page of items.
1 - 1000"ZXhhbXBsZTE"
The cursor pointing at the previous page of items.
1 - 1000"Xkjss7asS"