# Bank Ramp Setup

What has to be in place before your app offers the bank ramp — EUR bank transfers to stablecoins and back — and how your app checks it.

## Overview

The bank ramp is an Aurea service. Your apps call Aurea's API with the user's access token; there is no other account, key or dashboard for you to manage. Aurea sets it up for your tenant environment by environment — the sandbox (`isTestnet: true`) and production — and each environment has its own settings, its own KYC for each user and its own webhook.

## What Aurea Sets Up

Ask your Aurea contact, for the sandbox first and then for production, to:

1. **Connect the bank ramp** for your tenant. Until it is connected, the bank ramp endpoints answer `503` `NOAH_NOT_CONFIGURED` and nothing is sent anywhere. Once it is connected, every change to a user's KYC, deposits, transactions and payouts reaches Aurea with nothing to do on your side.
2. **Switch on the functions** you offer: KYC, pay-in, payout. A request for a function that is off answers `403` `NOAH_FUNCTION_OFF`.
3. **Choose where pay-ins go**: to the user's Aurea wallets (the *Aurea wallets* mode), to addresses outside Aurea that the user proved they own (the *standalone* mode — [Pay-In to Your Own Address](https://docs.aureahub.com/docs/guide-standalone-payin.md)), or both. Asking for a proof while the standalone mode is off answers `403` `NOAH_MODE_OFF`; a pay-in to an address the modes do not allow answers `400` `NOAH_DESTINATION_NOT_ALLOWED`.
4. **Choose the pairs** — currency and network — offered for pay-in and for payout. Another pair answers `400` `NOAH_PAIR_UNAVAILABLE` with the pairs offered.
5. **Set your fee**, if you charge one: a business fee per flow (pay-in, payout) and bank payment method type. The pay-in fee is taken from each deposit; the payout fee shows in each payout quote's breakdown.
6. **Register your return URLs** — where the hosted onboarding and payout pages send the user back. The onboarding page returns straight to your URL, so it must be an `https://` page (`400` `RETURN_URL_NOT_HTTPS` otherwise). A payout returns through Aurea, so an app deep link works there. Once your tenant has any return URL, any other answers `400` `RETURN_URL_NOT_ALLOWED`; a tenant with none yet is not checked.

## What You Set Up

- **Your webhook**, if your server should hear about each change without asking: your tenant's administrator (role `tenantadmin`) saves one per environment — [Events to Your Server](https://docs.aureahub.com/docs/guide-events.md).
- **Your screens**, from what your tenant offers: read it with [Tenant Settings](https://docs.aureahub.com/docs/bank-settings.md) and show only what will work.

## Check Your Settings

`GET /v1/ramp/bank/settings?isTestnet=true` answers, for the sandbox, whether the bank ramp is on (`switchedOn`), which functions and modes are on, the pairs and the fees; without `isTestnet` it answers for production. It reads Aurea's records only, so call it whenever your app builds its menu ([Tenant Settings](https://docs.aureahub.com/docs/bank-settings.md)).

## Sandbox First

The sandbox moves no real money: users complete a test KYC, and you can [simulate a deposit](https://docs.aureahub.com/docs/sandbox-deposit.md) and a payout. A user approved in the sandbox onboards again in production. The [Sandbox Playbook](https://docs.aureahub.com/docs/guide-sandbox-playbook.md) walks through every flow.

---

Web version: https://docs.aureahub.com/#bank-setup
