Skip to content

Refund an order

POST
/api/v1/commerce/orders/{id}/refund
curl --request POST \
--url https://digize.com/api/v1/commerce/orders/ord_01JF4B2C3D4E5F6G7H8J9K0M1N/refund \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: 5f1c2a8e-3b7d-4c55-9a0e-1f2d3c4b5a69' \
--header 'x-api-key: <x-api-key>' \
--data '{ "amount": 1900, "restock": true, "reason": "The bag arrived torn." }'

Gives money back on an order: to the card Stripe charged, then to the gift card that paid. lines says which units come back, and restock puts them on hand again.

Needs the commerce:write permission. It can’t be undone.

id
required
string
>= 1 characters <= 64 characters

Example

ord_01JF4B2C3D4E5F6G7H8J9K0M1N
Idempotency-Key
string
>= 1 characters <= 255 characters

Makes the request safe to send again: for 24 hours the same key and request answer the first response without repeating the change.

Example

5f1c2a8e-3b7d-4c55-9a0e-1f2d3c4b5a69
Media typeapplication/json
object
amount
required

In the store currency’s minor unit: 1900 is $19.00.

integer
<= 100000000
lines
Array<object>
object
lineId
required
string
>= 1 characters <= 64 characters
quantity
required
integer
<= 9007199254740991
restock
boolean
reason
Any of:
string
<= 300 characters

Example

{
"amount": 1900,
"restock": true,
"reason": "The bag arrived torn."
}

Done

Media typeapplication/json
object
id
required
string
number
required
number
customer
required
object
id
required
string
name
required
string
email
required
string
status
required
string
Allowed values: paid partially_refunded refunded disputed
fulfillment
required
string
Allowed values: unfulfilled fulfilled not_required
channel
required
string
Allowed values: storefront subscription checkout_link
currency
required
string
lines
required
Array<object>
object
id
required
string
productId
required
string
variantId
required
string
name
required
string
variant
required
string
sku
required
string
quantity
required
number
price
required
number
fulfilled
required
number
refunded
required
number
subtotal
required
number
discount
required
number
discountCode
required
string | null
shipping
required
number
shippingName
required
string | null
tax
required
number
taxName
required
string
taxIncluded
required
boolean
total
required
number
giftCard
required

What a gift card paid of the total.

number
refunded
required
number
checkoutId
required
string
paymentId
required

The Stripe PaymentIntent, when Stripe was paid.

string
placedAt
required
string format: date-time
fulfilledAt
required
Any of:
string format: date-time
refundedAt
required
Any of:
string format: date-time
cancelledAt
required
Any of:
string format: date-time
phone
required
string
shippingAddress
required
Any of:
object
name
required
string
line1
required
string
line2
required
string | null
city
required
string
zip
required
string
country
required
string
tracking
required
Any of:
object
carrier
required
string
number
required
string | null
url
required
string | null
note
required
string
tags
required
Array<string>
attention
required

Something the team needs to look at.

string | null
receipt
required

Unreceipted: no sending domain yet, so only Stripe’s receipt went.

string
Allowed values: queued unreceipted not_sent

Example

{
"status": "paid",
"fulfillment": "unfulfilled",
"channel": "storefront",
"receipt": "queued"
}

What was sent isn’t valid (invalid).

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: invalid unauthorized forbidden not_found conflict too_large rate_limited unavailable internal
message
required
string
details
object
key
additional properties
any

Example

{
"error": {
"code": "invalid"
}
}

No key, or one that’s unknown, off or expired.

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: invalid unauthorized forbidden not_found conflict too_large rate_limited unavailable internal
message
required
string
details
object
key
additional properties
any

Example

{
"error": {
"code": "invalid"
}
}

The key doesn’t have the permission this needs.

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: invalid unauthorized forbidden not_found conflict too_large rate_limited unavailable internal
message
required
string
details
object
key
additional properties
any

Example

{
"error": {
"code": "invalid"
}
}

Nothing has that id (not_found).

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: invalid unauthorized forbidden not_found conflict too_large rate_limited unavailable internal
message
required
string
details
object
key
additional properties
any

Example

{
"error": {
"code": "invalid"
}
}

A request with the same Idempotency-Key is still running (conflict).

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: invalid unauthorized forbidden not_found conflict too_large rate_limited unavailable internal
message
required
string
details
object
key
additional properties
any

Example

{
"error": {
"code": "invalid"
}
}

The Idempotency-Key was used with a different request.

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: invalid unauthorized forbidden not_found conflict too_large rate_limited unavailable internal
message
required
string
details
object
key
additional properties
any

Example

{
"error": {
"code": "invalid"
}
}

Over the rate limit; see retry-after.

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: invalid unauthorized forbidden not_found conflict too_large rate_limited unavailable internal
message
required
string
details
object
key
additional properties
any

Example

{
"error": {
"code": "invalid"
}
}