> ## Documentation Index
> Fetch the complete documentation index at: https://docs.conduit.financial/llms.txt
> Use this file to discover all available pages before exploring further.

# PAYOUT_RAIL_CURRENCY_MISMATCH

> The payout names a rail that settles a different currency from the one the payout moves; the payout was not created

## What happened

`POST /v2/payouts` named a rail that cannot settle the currency the payout moves, so the payout was refused. No transaction was created, no review started and no funds moved.

`POST /v2/orders` answers the same when its `autoPayout` names a rail that cannot settle the currency the conversion delivers. No order is created.

Each bank rail apart from `swift` settles exactly one currency, and a payout moves one currency and never converts, so a rail paired with any other currency is impossible rather than temporarily unavailable — a retry never clears it. `swift` carries any fiat currency the correspondent chain supports, so this error never applies to it.

| Rail                              | Settles                                       |
| --------------------------------- | --------------------------------------------- |
| `fedwire`, `rtp`, `fednow`, `ach` | USD                                           |
| `sepa`                            | EUR                                           |
| `swift`                           | any fiat currency, never refused by this gate |

```json theme={null}
{
  "type": "PAYOUT_RAIL_CURRENCY_MISMATCH",
  "title": "Rail Cannot Settle The Payout Currency",
  "status": 422,
  "detail": "Rail fedwire settles USD only, and this payout moves EUR. Send it over a rail that settles EUR.",
  "resolution": "Send the payout over a rail that settles its currency — `sepa` for EUR, or `fedwire`, `rtp`, `fednow` or `ach` for USD — or fund it from a virtual account in the currency the rail settles. `swift` carries any currency.",
  "docs": "/errors/payout-rail-currency-mismatch",
  "instance": "/v2/payouts",
  "correlationId": "00469ea4-52c1-4ffa-bd05-9f28b236a5fe",
  "timestamp": "2026-01-15T09:30:00.000Z"
}
```

## Common causes

* **A EUR virtual account sent over a US rail** -- `fedwire`, `rtp`, `fednow` or `ach` on a EUR balance
* **A USD virtual account sent over `sepa`** -- the mirror of the same mistake
* **The rail is hard-coded** -- one rail is used for every payout, and the funding account's currency varies

## Recovery

**1. Send it over a rail that settles the currency**

Use `sepa` or `swift` for EUR, and `fedwire`, `rtp`, `fednow`, `ach` or `swift` for USD. The recipient coordinates follow from the rail: a `sepa` recipient carries an IBAN and BIC, a US recipient carries an account and routing number.

```bash theme={null}
curl -X POST https://api.conduit.financial/v2/payouts \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Idempotency-Key: idem_NEW_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "customerId": "cus_034A0gCCVsxdV2PjHLx9k1",
    "virtualAccountId": "vac_034A0gCCW1I7ZiTVLb0G7I",
    "assetAmount": {"code": "EUR", "amount": "500.00"},
    "purpose": "payment_for_goods_or_services",
    "destination": {
      "type": "fiat",
      "rail": "sepa",
      "recipient": {
        "type": "individual",
        "firstName": "Jane",
        "lastName": "Doe",
        "iban": "DE89370400440532013000",
        "bic": "COBADEFFXXX",
        "bankName": "Commerzbank AG",
        "bankAddress": {
          "addressLine1": "Kaiserplatz 1",
          "city": "Frankfurt",
          "postalCode": "60311",
          "country": "DEU"
        },
        "postalAddress": {
          "addressLine1": "Hauptstr. 1",
          "city": "Berlin",
          "postalCode": "10115",
          "country": "DEU"
        }
      }
    }
  }'
```

**2. Or convert first, then pay out**

To send over a rail that settles another currency, convert between the customer's own virtual accounts with [`POST /v2/orders`](/api-reference/orders/create-an-order), then pay out from the account the order credits.

Use a fresh `Idempotency-Key` for the new payout.

## Prevention

* **Pick the rail from the funding account's currency** -- read the virtual account's `asset.code` and map it to the rails that settle it, rather than hard-coding one rail
* **Ask the requirements endpoint** -- [`GET /v2/payouts/requirements`](/api-reference/payouts/discover-payout-requirements) returns the recipient fields each rail needs, and is the same rail vocabulary create accepts

## Related endpoints

* [POST /v2/payouts](/api-reference/payouts/create-a-payout) -- create a payout
* [POST /v2/orders](/api-reference/orders/create-an-order) -- convert between one customer's virtual accounts
* [GET /v2/virtual-accounts/:id](/api-reference/virtual-accounts/get-a-virtual-account) -- read the funding account's currency
