Create a refund
Initiate a refund for a card transfer.
Use the Cancel or refund a card transfer endpoint for more comprehensive cancel and refund options.
See the reversals guide for more information.
To access this endpoint using an access token
you'll need to specify the /accounts/{accountID}/transfers.write
scope.
|
|
|
|
|
|
|
|
|
|
|
|
{
"Successful async refund": {
"summary": "Successful async refund",
"value": {
"amount": {
"currency": "USD",
"value": 1204
},
"createdOn": "2023-09-09T14:15:22Z",
"refundID": "d4963079-5b35-4d17-981e-8f851753f786"
}
},
"Successful sync refund": {
"summary": "Successful sync refund",
"value": {
"amount": {
"currency": "USD",
"value": 1204
},
"cardDetails": {
"confirmedOn": "2023-09-09T14:17:41Z",
"initiatedOn": "2023-09-09T14:16:22Z",
"status": "confirmed"
},
"createdOn": "2023-09-09T14:15:22Z",
"refundID": "d4963079-5b35-4d17-981e-8f851753f786",
"status": "pending",
"updatedOn": "2023-09-09T14:17:41Z"
}
}
}
{
"oneOf": [
{
"description": "Details of a card refund.",
"properties": {
"amount": {
"properties": {
"currency": {
"description": "A 3-letter ISO 4217 currency code.",
"example": "USD",
"pattern": "^[A-Za-z]{3}$",
"type": "string"
},
"value": {
"description": "Quantity in the smallest unit of the specified currency. \n\nIn USD this is cents, for example, $12.04 is 1204 and $0.99 is 99.",
"example": 1204,
"format": "int64",
"type": "integer"
}
},
"required": [
"currency",
"value"
],
"type": "object"
},
"cardDetails": {
"properties": {
"completedOn": {
"format": "date-time",
"type": "string"
},
"confirmedOn": {
"format": "date-time",
"type": "string"
},
"failedOn": {
"format": "date-time",
"type": "string"
},
"failureCode": {
"enum": [
"call-issuer",
"do-not-honor",
"processing-error",
"invalid-transaction",
"invalid-amount",
"no-such-issuer",
"reenter-transaction",
"cvv-mismatch",
"lost-or-stolen",
"insufficient-funds",
"invalid-card-number",
"invalid-merchant",
"expired-card",
"incorrect-pin",
"transaction-not-allowed",
"suspected-fraud",
"amount-limit-exceeded",
"velocity-limit-exceeded",
"revocation-of-authorization",
"card-not-activated",
"issuer-not-available",
"could-not-route",
"cardholder-account-closed",
"unknown-issue",
"duplicate-transaction"
],
"type": "string"
},
"initiatedOn": {
"format": "date-time",
"type": "string"
},
"settledOn": {
"format": "date-time",
"type": "string"
},
"status": {
"enum": [
"initiated",
"confirmed",
"settled",
"failed",
"completed"
],
"type": "string"
}
},
"required": [
"status"
],
"type": "object"
},
"createdOn": {
"format": "date-time",
"type": "string"
},
"refundID": {
"description": "Identifier for the refund.",
"format": "uuid",
"type": "string"
},
"status": {
"enum": [
"created",
"pending",
"completed",
"failed"
],
"type": "string"
},
"updatedOn": {
"format": "date-time",
"type": "string"
}
},
"required": [
"refundID",
"createdOn",
"updatedOn",
"status",
"amount"
],
"title": "Sync",
"type": "object"
},
{
"description": "Asynchronous refund response",
"properties": {
"amount": {
"properties": {
"currency": {
"description": "A 3-letter ISO 4217 currency code.",
"example": "USD",
"pattern": "^[A-Za-z]{3}$",
"type": "string"
},
"value": {
"description": "Quantity in the smallest unit of the specified currency. \n\nIn USD this is cents, for example, $12.04 is 1204 and $0.99 is 99.",
"example": 1204,
"format": "int64",
"type": "integer"
}
},
"required": [
"currency",
"value"
],
"type": "object"
},
"createdOn": {
"format": "date-time",
"type": "string"
},
"refundID": {
"format": "uuid",
"type": "string"
}
},
"required": [
"refundID",
"createdOn",
"amount"
],
"title": "Async",
"type": "object"
}
]
}
Response headers
x-request-id
string
<uuid>
required
{
"description": "Details of a card refund.",
"properties": {
"amount": {
"properties": {
"currency": {
"description": "A 3-letter ISO 4217 currency code.",
"example": "USD",
"pattern": "^[A-Za-z]{3}$",
"type": "string"
},
"value": {
"description": "Quantity in the smallest unit of the specified currency. \n\nIn USD this is cents, for example, $12.04 is 1204 and $0.99 is 99.",
"example": 1204,
"format": "int64",
"type": "integer"
}
},
"required": [
"currency",
"value"
],
"type": "object"
},
"cardDetails": {
"properties": {
"completedOn": {
"format": "date-time",
"type": "string"
},
"confirmedOn": {
"format": "date-time",
"type": "string"
},
"failedOn": {
"format": "date-time",
"type": "string"
},
"failureCode": {
"enum": [
"call-issuer",
"do-not-honor",
"processing-error",
"invalid-transaction",
"invalid-amount",
"no-such-issuer",
"reenter-transaction",
"cvv-mismatch",
"lost-or-stolen",
"insufficient-funds",
"invalid-card-number",
"invalid-merchant",
"expired-card",
"incorrect-pin",
"transaction-not-allowed",
"suspected-fraud",
"amount-limit-exceeded",
"velocity-limit-exceeded",
"revocation-of-authorization",
"card-not-activated",
"issuer-not-available",
"could-not-route",
"cardholder-account-closed",
"unknown-issue",
"duplicate-transaction"
],
"type": "string"
},
"initiatedOn": {
"format": "date-time",
"type": "string"
},
"settledOn": {
"format": "date-time",
"type": "string"
},
"status": {
"enum": [
"initiated",
"confirmed",
"settled",
"failed",
"completed"
],
"type": "string"
}
},
"required": [
"status"
],
"type": "object"
},
"createdOn": {
"format": "date-time",
"type": "string"
},
"refundID": {
"description": "Identifier for the refund.",
"format": "uuid",
"type": "string"
},
"status": {
"enum": [
"created",
"pending",
"completed",
"failed"
],
"type": "string"
},
"updatedOn": {
"format": "date-time",
"type": "string"
}
},
"required": [
"refundID",
"createdOn",
"updatedOn",
"status",
"amount"
],
"title": "Sync",
"type": "object"
}
Response headers
x-request-id
string
<uuid>
required
{
"properties": {
"error": {
"type": "string"
}
},
"required": [
"error"
],
"type": "object"
}
Response headers
x-request-id
string
<uuid>
required
Response headers
x-request-id
string
<uuid>
required
{
"description": "Details of a card refund.",
"properties": {
"amount": {
"properties": {
"currency": {
"description": "A 3-letter ISO 4217 currency code.",
"example": "USD",
"pattern": "^[A-Za-z]{3}$",
"type": "string"
},
"value": {
"description": "Quantity in the smallest unit of the specified currency. \n\nIn USD this is cents, for example, $12.04 is 1204 and $0.99 is 99.",
"example": 1204,
"format": "int64",
"type": "integer"
}
},
"required": [
"currency",
"value"
],
"type": "object"
},
"cardDetails": {
"properties": {
"completedOn": {
"format": "date-time",
"type": "string"
},
"confirmedOn": {
"format": "date-time",
"type": "string"
},
"failedOn": {
"format": "date-time",
"type": "string"
},
"failureCode": {
"enum": [
"call-issuer",
"do-not-honor",
"processing-error",
"invalid-transaction",
"invalid-amount",
"no-such-issuer",
"reenter-transaction",
"cvv-mismatch",
"lost-or-stolen",
"insufficient-funds",
"invalid-card-number",
"invalid-merchant",
"expired-card",
"incorrect-pin",
"transaction-not-allowed",
"suspected-fraud",
"amount-limit-exceeded",
"velocity-limit-exceeded",
"revocation-of-authorization",
"card-not-activated",
"issuer-not-available",
"could-not-route",
"cardholder-account-closed",
"unknown-issue",
"duplicate-transaction"
],
"type": "string"
},
"initiatedOn": {
"format": "date-time",
"type": "string"
},
"settledOn": {
"format": "date-time",
"type": "string"
},
"status": {
"enum": [
"initiated",
"confirmed",
"settled",
"failed",
"completed"
],
"type": "string"
}
},
"required": [
"status"
],
"type": "object"
},
"createdOn": {
"format": "date-time",
"type": "string"
},
"refundID": {
"description": "Identifier for the refund.",
"format": "uuid",
"type": "string"
},
"status": {
"enum": [
"created",
"pending",
"completed",
"failed"
],
"type": "string"
},
"updatedOn": {
"format": "date-time",
"type": "string"
}
},
"required": [
"refundID",
"createdOn",
"updatedOn",
"status",
"amount"
],
"title": "Sync",
"type": "object"
}
Response headers
x-request-id
string
<uuid>
required
{
"properties": {
"amount": {
"type": "string"
},
"error": {
"description": "Used for generic errors when invalid request data isn't attributed to a single request field.",
"type": "string"
}
},
"type": "object"
}
Response headers
x-request-id
string
<uuid>
required
Response headers
x-request-id
string
<uuid>
required
Response headers
x-request-id
string
<uuid>
required
Response headers
x-request-id
string
<uuid>
required
Headers
x-moov-version
string
API version
Specify an API version.
API versioning follows the format vYYYY.QQ.BB
, where
YYYY
is the yearQQ
is the two-digit month for the first month of the quarter (e.g., 01, 04, 07, 10)BB
is the build number, starting at.01
, for subsequent builds in the same quarter.- For example,
v2024.01.00
is the initial release of the first quarter of 2024.
- For example,
The latest
version represents the most recent development state. It may include breaking changes and should be treated as a beta release.
v2024.01.00
x-idempotency-key
string
<uuid>
required
x-wait-for
string
rail-response
Path parameters
accountID
string
<uuid>
required
transferID
string
<uuid>
required
Body
Specifies a partial amount to refund.
This request body is optional, an empty body will issue a refund for the full amount of the original transfer.
amount
integer<int64>
Response
amount
object
Show child attributes
currency
string
required
Pattern
value
integer<int64>
required
Quantity in the smallest unit of the specified currency.
In USD this is cents, for example, $12.04 is 1204 and $0.99 is 99.
cardDetails
object
Show child attributes
status
string<enum>
required
initiated
,
confirmed
,
settled
,
failed
,
completed
completedOn
string<date-time>
confirmedOn
string<date-time>
failedOn
string<date-time>
failureCode
string<enum>
call-issuer
,
do-not-honor
,
processing-error
,
invalid-transaction
,
invalid-amount
,
no-such-issuer
,
reenter-transaction
,
cvv-mismatch
,
lost-or-stolen
,
insufficient-funds
,
invalid-card-number
,
invalid-merchant
,
expired-card
,
incorrect-pin
,
transaction-not-allowed
,
suspected-fraud
,
amount-limit-exceeded
,
velocity-limit-exceeded
,
revocation-of-authorization
,
card-not-activated
,
issuer-not-available
,
could-not-route
,
cardholder-account-closed
,
unknown-issue
,
duplicate-transaction
initiatedOn
string<date-time>
settledOn
string<date-time>
createdOn
string<date-time>
refundID
string<uuid>
status
string<enum>
created
,
pending
,
completed
,
failed
updatedOn
string<date-time>
amount
object
Show child attributes
currency
string
required
Pattern
value
integer<int64>
required
Quantity in the smallest unit of the specified currency.
In USD this is cents, for example, $12.04 is 1204 and $0.99 is 99.
createdOn
string<date-time>
refundID
string<uuid>