Theme
Refunds
Refunds reverse a succeeded PaymentIntent, in full or in part, within acquiring rules.
Base path: /v1/refunds
Create
bash
curl https://api.digid.cc/v1/refunds \
-u sk_live_...: \
-H "Idempotency-Key: refund-order-1001" \
-H "Content-Type: application/json" \
-d '{
"payment_intent": "pi_1Ab...",
"amount": 2490,
"reason": "requested_by_customer"
}'| Field | Type | Notes |
|---|---|---|
payment_intent | string | Required. The succeeded intent to refund. |
amount | int | Minor units. Omit for a full refund. |
reason | duplicate | fraudulent | requested_by_customer | Informational. |
metadata | object | Free-form. |
Constraints (FR-9):
- Refund amount ≤ original capture amount — excess is rejected.
- A refunded intent can be refunded again only if a positive balance remains (partial refunds are additive up to the capture amount).
Response:
json
{
"id": "re_1Cd...",
"object": "refund",
"amount": 2490,
"currency": "eur",
"payment_intent": "pi_1Ab...",
"status": "pending",
"created_at": "2026-09-08T09:30:00Z"
}State machine
mermaid
stateDiagram-v2
[*] --> pending: create
pending --> succeeded
pending --> failed
succeeded --> [*]
failed --> [*]pending → succeeded normally; failed means the acquirer rejected the refund (e.g. the original capture is being disputed). A refund.succeeded or refund.failed webhook fires on the transition.
Retrieve
bash
curl https://api.digid.cc/v1/refunds/re_1Cd... -u sk_live_...:List
bash
curl "https://api.digid.cc/v1/refunds?payment_intent=pi_1Ab...&limit=25" -u sk_live_...:Further reading
- Settlement — refunds vs settlements.
- Disputes — what happens when a cardholder disputes.