> ## Documentation Index
> Fetch the complete documentation index at: https://dev.enterprise.moonpay.com/llms.txt
> Use this file to discover all available pages before exploring further.

# GBP payouts

> Pay out GBP to UK bank accounts over Faster Payments (FPS) or CHAPS. Covers who can receive GBP payouts, sort code and postcode validation, the FPS payment reference rules, and errors.

GBP payouts go out to a UK bank account over Faster Payments (FPS) or CHAPS. The rail you register the account with is the rail the payout uses. See [Payouts](https://dev.enterprise.moonpay.com/offramp.md) for the overall flow.

## Who can receive GBP payouts

| Rail | `account_identifier` type | First party | Third party | Provider |
| - | - | - | - | - |
| Faster Payments | `FPS` | Yes | No | Fiat Republic |
| CHAPS | `CHAPS` | Yes | No | Fiat Republic |

GBP payouts go only to accounts in your customer's own name. No provider supports third-party GBP payouts, so `abilities.fiat_payout.gbp.fps_thirdparty` and `chaps_thirdparty` are always `Unavailable`, and in production registering an account with `is_third_party: true` returns `422`. GBP has no SWIFT payouts.

Read `abilities.fiat_payout.gbp` from `GET /api/customers/{customer_id}/abilities` to check `fps` and `chaps` for a customer.

## Register the bank account

`POST /api/addresses/fiat` with an `FPS` or `CHAPS` account identifier:

```bash FPS theme={null}
curl -X POST "https://api.sandbox.iron.xyz/api/addresses/fiat" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "X-API-Key: <your-api-key>" \
  -d '{
    "customer_id": "4b85d15e-f343-41c0-809c-85314cae2fa6",
    "currency": { "code": "GBP" },
    "label": "Jane Smith Current Account",
    "bank_details": {
      "recipient": { "type": "Individual", "given_name": "Jane", "family_name": "Smith" },
      "provider_name": "Barclays",
      "provider_country": { "code": "GB" },
      "account_identifier": {
        "type": "FPS",
        "sort_code": "20-00-00",
        "account_number": "55779911"
      },
      "address": {
        "street": "1 Churchill Place",
        "city": "London",
        "state": "England",
        "country": { "code": "GB" },
        "postal_code": "E14 5HP"
      },
      "is_third_party": false
    }
  }'
```

> [!NOTE]
>
> `POST /api/addresses/fiat` requires an `Idempotency-Key` header. A missing key returns `400`. Only successful responses are cached, so a retry after an error runs again. See [Idempotency](https://dev.enterprise.moonpay.com/idempotency.md).

Use `"type": "CHAPS"` with the same fields for a CHAPS account.

* `sort_code`: 6 digits, with or without dashes. MoonPay Enterprise stores it without dashes, so pass it without dashes in the Autoramp's `recipient_account`. `"20-00-00"` there doesn't match the stored `"200000"` and returns `400` with `"recipient fiat account not verified"`. Anything else returns `400` with `"Invalid sort code"`
* `account_number`: the UK account number
* `address.postal_code`: a UK address needs a valid UK postcode, stored in capitals with one space, such as `E14 5HP`. A malformed postcode returns `400` with `"Invalid UK postal code format"`

The other fields follow the same rules as every bank account. See [Fields for every rail](https://dev.enterprise.moonpay.com/payouts/usd.md#fields-for-every-rail).

A new account stays `RegistrationPending` until Fiat Republic activates the payee, then moves to `Registered`. If registration keeps failing for more than 24 hours, the account moves to `RegistrationFailed`. Listen for the `register_fiat_address_status` webhook instead of polling.

## Create the payout Autoramp

Create a standing Autoramp or a quote-based Autoramp the same way as any payout. See [Payouts](https://dev.enterprise.moonpay.com/offramp.md#payout-with-an-exact-out-quote). The recipient is the registered account:

```json theme={null}
"recipient_account": {
  "type": "Fiat",
  "account_identifier": { "type": "FPS", "sort_code": "200000", "account_number": "55779911" }
}
```

## Payment reference

Set `fps_payment_reference` on an FPS Autoramp:

* 6-18 letters. Digits, spaces, and symbols aren't accepted
* Not one letter repeated, such as `AAAAAA`
* Fiat Republic sends at most 17 letters, so an 18th letter is dropped

CHAPS payouts don't carry a reference you set. `fps_payment_reference` on a CHAPS Autoramp returns `400` with `"fps_payment_reference is only allowed for offramps via FPS transfer"`.

The reference is fixed when you create the Autoramp. On a quote-based Autoramp, the reference is part of the signed quote: pass it on `GET /api/autoramps/quote`, not on `POST /api/autoramps`, which returns `400` with `"Invalid signature"` if you add it there. To use a different reference for later deposits on an FPS Autoramp, pass `payment_reference` on `GET /api/autoramps/{autoramp_id}/quote`. See [Quotes](https://dev.enterprise.moonpay.com/quotes.md).

## Timing

See [Settlement Times by Payment Method](https://dev.enterprise.moonpay.com/transaction-status.md#settlement-times-by-payment-method). With `batch_payout: true`, GBP Autoramps pay out once a day at 18:00 UTC. See [End of Day Settlement](https://dev.enterprise.moonpay.com/end-of-day-settlement.md).

## Fees and minimums

Banking fees come from the Autoramp's fee profile. See [Fees and Invoices](https://dev.enterprise.moonpay.com/fees-and-invoices.md). A payout under 1 GBP ends as `RejectedMinAmount`. See [Minimum Transaction Amount](https://dev.enterprise.moonpay.com/limits-and-minimum.md#minimum-transaction-amount).

## What can go wrong

| Response | Cause |
| - | - |
| `400` `"Invalid sort code"` | The sort code isn't 6 digits |
| `400` `"Invalid UK postal code format"` | The UK postcode is malformed |
| `400` `"GBP is disabled for this partner"` | GBP Autoramps are turned off for your account. Contact the MoonPay Enterprise team |
| `409` `"A fiat address with this bank account already exists for this customer"` | The account is already registered. Reuse its ID |
| `422` `{ "message": "Customer does not have access to this rail", "trace_id": "..." }` | A third-party account, or a customer who can't use Fiat Republic |

## Sandbox

Sandbox registers GBP accounts automatically. Test the full payout with [Test the full flow in Sandbox](https://dev.enterprise.moonpay.com/offramp.md#test-the-full-flow-in-sandbox).
