Refunds return money to the customer. Shuttle supports refunding payments, captures, and entire contracts.
Types of Refund
- Refund a payment: refund a completed
PAYMENTtransaction in part or full - Refund a capture: refund a previously captured authorisation in part or full
- Refund a contract: refund across multiple transactions on a recurring contract in a single instruction
You cannot refund an AUTH that hasn't been captured — you must void it instead.
Partial and Multiple Refunds
You can refund less than the full amount. Multi-refund (e.g., refund $20 then later refund another $80 from a $100 payment) is supported but not available on all gateways.
Offline / Manual Refunds
Set manual: true to record a refund that was performed outside of Shuttle (e.g., refunded directly through the processor's dashboard). This creates a record for audit purposes without instructing the gateway.
Contract Refunds
When refunding a contract, you can:
- Specify an
amountto refund across the contract's transactions - Use
validate_only: trueto preview what would be refunded without executing - For enterprise multi-entity contracts, specify which
legal_entitiesto refund
Status
| Status | Description |
|---|---|
SUCCESS | Refund was processed successfully |
PENDING | Refund is still being processed |
DECLINED | Refund was declined by the gateway |
INVALID_PAYMENT_METHOD | Refund attempted on a disconnected gateway or unsupported payment method |
UNRESOLVED | No conclusive result from the gateway |
UNATTRIBUTED | Refund succeeded but had an internal recording issue |