Skip to main content

Refund charge

Quick Reference

WhatRefund a captured charge
WhyReturn funds to the payer — prevent chargebacks, handle returns, and maintain customer trust
Reading Time5 min
DifficultyIntermediate
PrerequisitesAuthentication → A captured charge (status: confirmed or paid)
POST/api/v1/bank/wallet/charge/{charge_uuid}/refund/{wallet_uuid}/Bearer TokenRefund a charge

Why refunds matter

Without refundsWith refunds
Unhappy customers file chargebacks ($25+ dispute fee each)You return funds proactively before a dispute is filed
Chargeback ratio rises above 1% — card networks flag your accountRefund ratio doesn't count against your chargeback threshold
Customer trust erodes after a bad experienceFast refunds turn a negative into a "they made it right" moment
Accounting shows overstated revenueRefunded amounts adjust revenue reporting automatically
Support tickets pile up with "where's my money?"Refund status is trackable via Get Charge and webhooks

Refund flow


Authentication

Requires Bearer token. See Authentication.

Path parameters

Both UUIDs go in the URL path, not in the request body or query string:

FieldTypeRequiredDescription
charge_uuidstring (UUID)YesCharge to refund
wallet_uuidstring (UUID)YesWallet that owns the charge

Optional body fields

FieldTypeRequiredDescription
amountnumberNoPartial refund amount. Omit for full refund
reasonstringNoRefund reason for reconciliation and reporting
Path parameters, not body

Unlike most A55 endpoints, the refund endpoint takes charge_uuid and wallet_uuid in the URL path: POST /api/v1/bank/wallet/charge/{charge_uuid}/refund/{wallet_uuid}/


Code examples

Full refund

curl -s -X POST "https://core-manager.a55.tech/api/v1/bank/wallet/charge/51dcca6e-7310-4b73-a94c-90835408f2ff/refund/f47ac10b-58cc-4372-a567-0e02b2c3d479/" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json"

Partial refund

curl -s -X POST "https://core-manager.a55.tech/api/v1/bank/wallet/charge/51dcca6e-7310-4b73-a94c-90835408f2ff/refund/f47ac10b-58cc-4372-a567-0e02b2c3d479/" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"amount": 50.25,
"reason": "Customer returned 1 of 3 items"
}'

Response fields

FieldTypeDescription
charge_uuidstringRefunded charge identifier
wallet_uuidstringWallet that owned the charge
statusstringrefunded on success
messageobjectAdditional details or empty object on success

Complete response example

Full refund

{
"charge_uuid": "51dcca6e-7310-4b73-a94c-90835408f2ff",
"wallet_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"status": "refunded",
"message": {}
}

Partial refund

{
"charge_uuid": "51dcca6e-7310-4b73-a94c-90835408f2ff",
"wallet_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"status": "refunded",
"message": {}
}

Error responses

StatusCodeDescriptionResolution
400errors.wallet.not_foundWallet UUID does not existVerify wallet_uuid in the URL path
400REFUND_NOT_ALLOWEDCharge is not in a refundable stateOnly confirmed or paid charges can be refunded. Check charge status with Get charge
401unauthorizedInvalid or expired Bearer tokenRefresh your access token via Cognito
404CHARGE_NOT_FOUNDCharge not foundVerify charge_uuid in the URL path
422amount_exceeds_capturedPartial refund amount exceeds captured amountRefund amount must be ≤ the captured amount
Installment refunds are all-or-nothing

If a payment was made in installments, a full refund returns all installments in full. You cannot refund a single installment. For partial returns on installment payments, use a partial refund with a specific amount.

Refund vs. chargeback — costs comparison

Processing a refund costs you nothing beyond the reversed payment. A chargeback costs you the payment amount plus a dispute fee ($25–$100 depending on the card network). Always refund proactively when a legitimate complaint arrives.

Refund timing

Refunds take 5–10 business days to appear on the payer's statement, depending on the card issuer. Inform your customers about this timeline to reduce "where's my refund?" support tickets.