> ## 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.

# EUR virtual accounts

> An IBAN in your customer's name that receives SEPA payments and converts them to stablecoins. Covers who can get one, the two banking partners behind EUR accounts, third-party deposits, pay by reference, and the IBAN country.

A EUR virtual account gives your customer an IBAN in their own name. SEPA payments to it convert to the Autoramp's stablecoin.

## Who can get one

Two banking partners issue EUR accounts. MoonPay Enterprise picks one when it provisions the Autoramp, based on whether the Autoramp accepts third-party deposits and what the customer is eligible for.

| | First-party Autoramp | Third-party Autoramp |
| - | - | - |
| **Bank in `deposit_rails`** | Banking Circle or AS LHV Pank, depending on your account's configuration and the customer's eligibility | AS LHV Pank |
| **Individuals** | Yes | Only with the [third-party rules](#third-party-deposits) below |
| **Businesses** | Yes. Banking Circle needs a public IP address from the business's onboarding | Only with the [third-party rules](#third-party-deposits) below |

## Requirements

* The customer is `Active` and `fiat_deposit.eur.sepa` reads `Active` in `GET /api/customers/{customer_id}/abilities`. For a third-party Autoramp, check `fiat_deposit.eur.sepa_thirdparty`. See [Before you create a virtual account](https://dev.enterprise.moonpay.com/onramp.md#before-you-create-a-virtual-account).

## Create a EUR virtual account

In the dashboard, click **New Virtual Account** on the **Onramp** card under **Routes** and pick EUR. 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": "EUR" }],
    "destination_currency": { "type": "Crypto", "token": "EURC", "blockchain": "Base" },
    "recipient_account": {
      "type": "Crypto",
      "chain": "Base",
      "address": "0xaf77d065e77c8cC2239327C5EDb3A432268e5831"
    },
    "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 IBAN asynchronously. The Autoramp stays `Authorized` until the IBAN is active, then moves to `Approved`. If the bank fails to activate the IBAN, the Autoramp moves to `Rejected` without a webhook. Poll `GET /api/autoramps/{autoramp_id}` if it stays quiet.

## What your customer sees

An `Approved` EUR Autoramp returns one `SEPA` entry in `deposit_rails`:

```json theme={null}
"deposit_rails": [
  {
    "type": "SEPA",
    "iban": "DE89370400440532013000",
    "bic": "<bank-bic>",
    "beneficiary_name": "Jane Doe",
    "name": "Banking Circle S.A. – German Branch",
    "address": "Maximilianstraße 54, 80538 München",
    "phone": "+352 4015‑1"
  }
]
```

An account at AS LHV Pank shows `AS LHV Pank`, `Tartu mnt 2, 10145 Tallinn`, and `+372 680 0400` instead.

| Field | Description |
| - | - |
| `iban` | The customer's IBAN. Always present |
| `bic` | The bank's BIC |
| `beneficiary_name` | The account holder: your customer's verified name |
| `name` | The bank that holds the account |
| `address` | The bank's address |
| `phone` | The bank's phone number |

An IBAN's country prefix is set by the bank that issues it, and it can't be changed after the account opens. Banking Circle issues German (`DE`) IBANs.

## Third-party deposits

Only AS LHV Pank issues third-party EUR accounts. An Autoramp created with `source_is_third_party: true` gets one when the customer meets these rules:

* **Individuals:** nationality on file, and not a national of North Korea, Iran, Venezuela, Myanmar, or the US. Nationals of Russia and Belarus qualify only if they live in the EEA, the UK, or Switzerland. The customer lives in a supported country, which excludes the US, and has a street address on file.
* **Businesses:** the business and its beneficial owners are in supported countries, and no owner holds one of the prohibited nationalities above. Owners who are Russian or Belarusian nationals must live in the EEA or the UK.

On a first-party Autoramp at Banking Circle, the bank returns a payment from anyone other than your customer. Third-party accounts at AS LHV Pank accept them.

`third_party_classification` is set on every deposit to a Banking Circle account. At AS LHV Pank it's set only on third-party Autoramps, and only when the payer's name comes with the payment. See [Third-party deposits](https://dev.enterprise.moonpay.com/onramp.md#third-party-deposits).

## Pay by reference

EUR Autoramps support [pay by reference](https://dev.enterprise.moonpay.com/autoramp.md#pay-by-reference). Each Autoramp on the shared IBAN gets an `inbound_payment_reference` such as `IR-K7M2QX`. Senders put it in the SEPA payment reference. MoonPay Enterprise matches it case-insensitively, and finds it inside longer text such as `Invoice 1234 IR-K7M2QX`.

## Timing

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

## Fees

A fee for the incoming SEPA 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 |
| - | - |
| `422` `"Customer is unable to complete the action. Consult the customer abilities API"` | No EUR bank can serve this customer yet, or a third-party Autoramp fails the rules above. Check `fiat_deposit.eur` in the abilities |
| Autoramp stays `Authorized` | The bank is still activating the IBAN. See [Why an Autoramp is still Authorized](https://dev.enterprise.moonpay.com/autoramp-status.md#why-an-autoramp-is-still-authorized) |
| Autoramp moves to `Rejected` | The bank failed to activate the IBAN, or closed it. Create a new Autoramp |
| A small test payment is `RejectedMinAmount` | Expected for a deposit below the minimum. See [Micro-Deposits (Penny Tests)](https://dev.enterprise.moonpay.com/limits-and-minimum.md#micro-deposits-penny-tests) |

## 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).
