Refunds
A refund returns funds to the original payment method after settlement. Refunds are distinct from voids which cancel pre-settlement payments.
Create a refund
POST /pos/v1/orders/{order_id}/payments/{payment_id}/refundsRequired scopes: tilt/payments:refund
Request body
{ "amount_cents": 2500, "reason": "customer_request"}| Field | Type | Required | Description |
|---|---|---|---|
amount_cents | integer | Yes | Amount to refund in cents. Must be ≤ the payment amount minus already-refunded amount. |
reason | string | No | Reason code. One of: customer_request, duplicate, fraudulent, other. |
Response
{ "refund_id": "uuid", "payment_id": "uuid", "order_id": "uuid", "status": "pending", "amount_cents": 2500, "reason": "customer_request", "created_at": "2024-01-16T09:00:00Z"}Refunds are processed asynchronously. Subscribe to the payment.refunded webhook event for completion notification.
Get a refund
GET /pos/v1/orders/{order_id}/payments/{payment_id}/refunds/{refund_id}Required scopes: tilt/payments:read
Refund statuses
| Status | Description |
|---|---|
pending | Submitted to processor |
approved | Processor confirmed the refund |
failed | Processor rejected the refund (see processor_message) |