---
title: "Return a fiat payout"
method: POST
path: "/v1/payouts/fiat/{payoutId}/refund"
tags: ["Refunds"]
---

# Return a fiat payout

`POST /v1/payouts/fiat/{payoutId}/refund`

## Request

- Base URL: `https://api.sandbox.alfredpay.io`
- URL: `https://api.sandbox.alfredpay.io/v1/payouts/fiat/{payoutId}/refund`
- Auth: one of:
  - HTTP bearer
  - API key in header `api-key` and API key in header `api-secret`

Valid only while the payout hasn't reached a terminal state.

Before the rail accepts the instruction, this unwinds the lock and releases the balance. After that, it asks the destination to return the funds and completes only once the return is confirmed. The earlier you raise it, the cheaper the unwind.

**Wait on** `refund.updated`. See [Webhooks and events](/docs/webhooks-and-events).

## Headers

- `Idempotency-Key` string, uuid, required

## Response `202`

Accepted

- RefundAction
  - `actionId` string
  - `actionType` 'REFUND'
  - `parentTransactionId` string
  - `status` 'REQUESTED' | 'PROCESSING' | 'COMPLETED' | 'DECLINED'
  - `parentOutcome` 'CANCELLED' | 'null', nullable: The parent lands CANCELLED whether unwound pre-execution or returned after a leg went out.
  - `createdAt` string, date-time
  - `updatedAt` string, date-time

## Other responses

- `409`: `parent_terminal`: the transaction has reached COMPLETE, FAILED, CANCELLED or BLOCKED. No action reaches back into it; recovering value is a new transaction.

## Changes

- **2026-11-03** `20fef4fd2ab3`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/alfredpay/apis/alfred-penny-api-client-documentation/changes/v1/payouts/fiat/:payoutId/refund/post.md)

---

[API](https://skmtc.dev/alfredpay/apis/alfred-penny-api-client-documentation.md) - [All operations](https://skmtc.dev/alfredpay/apis/alfred-penny-api-client-documentation/llms.txt) - [OpenAPI document](https://skmtc.dev/alfredpay/apis/alfred-penny-api-client-documentation/revisions/20fef4fd2ab3?raw)
