> ## 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 virtual accounts

> A UK sort code and account number in your customer's name at Banking Circle UK. Receives Faster Payments and CHAPS and converts them to stablecoins.

A GBP virtual account gives your customer a UK sort code and account number in their own name. Faster Payments (FPS) and CHAPS payments to it convert to the Autoramp's stablecoin.

## Who can get one

| Customer | Eligible |
| - | - |
| Individual | Yes |
| Business | Yes, when a public IP address was recorded during the business's onboarding |

Every GBP account is held at **Banking Circle UK**. GBP must also be enabled for your partner account.

## Requirements

* The customer is `Active` and `fiat_deposit.gbp.fps` reads `Active` in `GET /api/customers/{customer_id}/abilities`. See [Before you create a virtual account](https://dev.enterprise.moonpay.com/onramp.md#before-you-create-a-virtual-account).
* The Autoramp is created without `source_is_third_party`. See [Third-party deposits](#third-party-deposits).

## Create a GBP virtual account

In the dashboard, click **New Virtual Account** on the **Onramp** card under **Routes** and pick GBP. Through the API:

```bash theme={null}
curl -X POST "https://api.sandbox.iron.xyz/api/autoramps" \
  -H "Content-Type: application/json; charset=utf-8" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "X-API-Key: <your-api-key>" \
  -d '{
    "source_currencies": [{ "type": "Fiat", "code": "GBP" }],
    "destination_currency": { "type": "Crypto", "token": "USDC", "blockchain": "Ethereum" },
    "recipient_account": {
      "type": "Crypto",
      "chain": "Ethereum",
      "address": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e"
    },
    "customer_id": "123e4567-e89b-12d3-a456-426614174000"
  }'
```

> [!NOTE]
>
> `POST /api/autoramps` 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).

The bank opens the account asynchronously. The Autoramp stays `Authorized` until the account is active, then moves to `Approved`.

## What your customer sees

An `Approved` GBP Autoramp returns two entries in `deposit_rails`, one for FPS and one for CHAPS. Both carry the same sort code and account number.

```json theme={null}
"deposit_rails": [
  {
    "type": "FPS",
    "sort_code": "20-00-00",
    "account_number": "55779911",
    "beneficiary_name": "Jane Doe",
    "bank_name": "Banking Circle UK",
    "bank_address": "24 King William Street, London EC4R 9AT"
  },
  {
    "type": "CHAPS",
    "sort_code": "20-00-00",
    "account_number": "55779911",
    "beneficiary_name": "Jane Doe",
    "bank_name": "Banking Circle UK",
    "bank_address": "24 King William Street, London EC4R 9AT"
  }
]
```

| Field | Description |
| - | - |
| `sort_code` | The account's sort code. Always present |
| `account_number` | The customer's account number. Always present |
| `beneficiary_name` | The account holder: your customer's verified name |
| `bank_name` | `Banking Circle UK` |
| `bank_address` | The bank's address |

## Third-party deposits

GBP accounts accept payments from third parties. You can't create a GBP Autoramp flagged as third-party, though: `source_is_third_party: true` returns `422` with `"Customer is unable to complete the action. Consult the customer abilities API"`, and `fiat_deposit.gbp.fps_thirdparty` reads `Unavailable`. Create the Autoramp without the flag.

`third_party_classification` is still set on every GBP deposit, so you can see whether the payer matched your customer. See [Third-party deposits](https://dev.enterprise.moonpay.com/onramp.md#third-party-deposits).

## Pay by reference

GBP Autoramps support [pay by reference](https://dev.enterprise.moonpay.com/autoramp.md#pay-by-reference). Each Autoramp on the shared account gets an `inbound_payment_reference` such as `IR-K7M2QX`. Senders put it in the payment reference.

## Timing

See [Settlement Times by Payment Method](https://dev.enterprise.moonpay.com/transaction-status.md#settlement-times-by-payment-method) for FPS and CHAPS timing.

## Fees

A fee for the incoming FPS or CHAPS payment comes from the Autoramp's fee profile. When it's deducted, it appears as `banking_fee` on the transaction. See [Fees on a deposit](https://dev.enterprise.moonpay.com/onramp.md#fees-on-a-deposit).

## What can go wrong

| What you see | Cause and fix |
| - | - |
| `400` `"GBP is disabled for this partner"` | GBP isn't enabled for your account. Contact the MoonPay Enterprise team |
| `422` `"Customer is unable to complete the action. Consult the customer abilities API"` | The Autoramp is third-party, or GBP isn't `Active` for this customer yet. Check `fiat_deposit.gbp` in the abilities |
| Autoramp stays `Authorized` | The bank is still opening the account. See [Why an Autoramp is still Authorized](https://dev.enterprise.moonpay.com/autoramp-status.md#why-an-autoramp-is-still-authorized) |

## Sandbox

Approve the Autoramp with `PUT /api/sandbox/autoramp/{id}` and simulate a deposit with `POST /api/sandbox/transaction`. See [Test the full flow in Sandbox](https://dev.enterprise.moonpay.com/onramp.md#test-the-full-flow-in-sandbox).
