SpareSpare Docs
GuidesAPI Reference

Refunds

Create a refund payment request, or read the payer refund account.

POST
/payment/refunds
Authorization
Header

ES256 request signature. Required on signed-write endpoints, see [request signing](/docs/quickstart/request-signing).

Up to 64 characters. A new key creates a new refund. The same key with the same body returns the first refund. The same key with a different body returns `already_exists`.

Regulatory jurisdiction the request routes to (e.g. `UAE`, `KSA`, `MAIN`). Match it to the market you're integrating.

Body
*object
object

Request Body

application/json

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/payment/refunds" \  -H "x-signature: string" \  -H "x-idempotency-key: string" \  -H "x-tenant: UAE" \  -H "Content-Type: application/json" \  -d '{    "amount": {      "amount": "string",      "currency": "AED"    },    "paymentId": "string"  }'
{  "data": {    "id": "9b8e1c20-5a44-4d7f-8e11-2c6a0d4f7b90",    "status": "New",    "type": "SingleInstantPayment",    "creditorType": "USER",    "isCopVerified": true,    "amount": "42.50",    "currency": "AED",    "originalPaymentId": "3f2a9c14-7b6e-4d11-9a20-6c8e1b4d0f77",    "internalReference": "Kp9mQx2nRwT",    "redirectUrl": "https://web.sandbox.tryspare.ae/pis/Kp9mQx2nRwT",    "creditorAccount": {      "schemeName": "IBAN",      "identification": "AE** **** **** **** *** 6789",      "name": "Fatima Al Hashimi"    },    "debtorAccount": {      "id": "4a1c8e30-2b6d-4f55-9c10-7e3a0d5b8c66",      "schemeName": "IBAN",      "identification": "AE070331234567890123456",      "name": "Acme Trading LLC"    },    "instructions": {      "amount": {        "amount": "42.50",        "currency": "AED"      }    }  }}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "not_found",  "details": {},  "message": "string"}
POST
/payment/refunds/account
Authorization
Header

Regulatory jurisdiction the request routes to (e.g. `UAE`, `KSA`, `MAIN`). Match it to the market you're integrating.

Body
*object

Request Body

application/json

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/payment/refunds/account" \  -H "x-tenant: UAE" \  -H "Content-Type: application/json" \  -d '{    "paymentId": "string"  }'
{  "data": {    "accountHolderName": "string",    "createdAt": "2025-01-01T00:00:00Z",    "id": "string",    "maskedIdentification": "string",    "provider": {      "code": "string",      "id": "string",      "logoUrl": "string",      "name": "string"    },    "scheme": "string",    "status": "string"  },  "error": "string",  "errorDescription": {    "property1": [      "string"    ],    "property2": [      "string"    ]  }}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "string",  "details": {},  "message": "string"}
{  "code": "not_found",  "details": {},  "message": "string"}