---
title: Stable to fiat
description: Send your first payout with BlindPay.
navigation:
  order: 2
---

::c-steps

### Get your API Key

::c-prerequisites{:steps='["mint-usdb"]'}
::

### Accept Terms of Service

For testing purposes you can accept the terms of service by yourself, for production purposes **you should make your customer that is being created as a customer to accept the terms.**

::c-auth-note
::

```bash [cURL]
curl --request POST \
  --url https://api.blindpay.com/v1/e/instances/in_000000000000/tos \
  --header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
    "idempotency_key": "<your_uuid>"
  }'
```

After you get the url, please open it in your browser, accept the terms and get the `tos_id` following the image below. This `tos_id` is necessary for creating customers.

![https://pub-4fabf5dd55154f19a0384b16f2b816d9.r2.dev/blindpay_tos_acceptance-min.jpg](https://pub-4fabf5dd55154f19a0384b16f2b816d9.r2.dev/blindpay_tos_acceptance-min.jpg)

### Create a Customer

Run the code below in your terminal to create a new customer.

All customers on `development` instances will be automatically approved by our KYC.

::c-code-group

```bash [cURL]
curl --request POST \
  --url https://api.blindpay.com/v1/instances/in_000000000000/customers \
  --header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
    "tos_id": "to_fuu6PrnGEHhl",
    "type": "individual",
    "kyc_type": "standard",
    "email": "email@example.com",
    "tax_id": "12345678",
    "address_line_1": "8 The Green",
    "address_line_2": "#12345",
    "city": "Dover",
    "state_province_region": "DE",
    "country": "US",
    "postal_code": "02050",
    "ip_address": "127.0.0.1",
    "phone_number": "+1234567890",
    "proof_of_address_doc_type": "UTILITY_BILL",
    "proof_of_address_doc_file": "https://pub-4fabf5dd55154f19a0384b16f2b816d9.r2.dev/v4-460px-Get-Proof-of-Address-Step-3-Version-2.jpg.jpeg",
    "first_name": "John",
    "last_name": "Doe",
    "date_of_birth": "1998-01-01T00:00:00Z",
    "id_doc_country": "US",
    "id_doc_type": "PASSPORT",
    "id_doc_front_file": "https://pub-4fabf5dd55154f19a0384b16f2b816d9.r2.dev/1000_F_365165797_VwQbNaD4yjWwQ6y1ENKh1xS0TXauOQvj.jpg",
    "selfie_file": "https://pub-4fabf5dd55154f19a0384b16f2b816d9.r2.dev/selfie.png"
  }'
```

::

### Add a Bank Account

In this example we're going to add an existing ACH bank account from the US.

This account should be a valid one, so please replace `beneficiary`, `routing_number` and `account_number` with your own information.

::c-auth-note{customer}
::

::c-code-group

```bash [cURL]
curl --request POST \
  --url https://api.blindpay.com/v1/instances/in_000000000000/customers/re_000000000000/bank-accounts \
  --header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "type": "ach",
  "name": "Display Name",
  "beneficiary_name": "<Replace this>",
  "routing_number": "<Replace this>",
  "account_number": "<Replace this>",
  "account_type": "checking",
  "account_class": "individual"
}'
```

::

### Create a Payout on Base Sepolia Testnet

In this step we're going to use a default [express.js](https://expressjs.com/en/starter/hello-world.html){target="\_blank"} server to create a payout on `Base Sepolia Testnet`.

Before start, please ensure you have [Node.js](https://nodejs.org/en/download/){target="\_blank"} installed.

Now create a folder called `blindpay-api-example`. Inside the folder, please run the following command:

```bash
npm init
```

And now install the dependencies:

```bash
npm install express ethers
```

Now create a file called `index.js` inside it, paste the code below and replace the values with your own.

::c-alert{icon="circle-info"}
**Remember**: replace `walletPrivateKey` with the private key from the wallet you minted the USDB on the first step.
::

::c-code-group

```js [index.js]
import express from 'express'
import { ethers } from 'ethers'

const app = express()

app.get('/', async (req, res) => {
  // Before start
  const rpcProviderUrl = '<Replace this>' // You can get this from https://chainlist.org/
  const walletPrivateKey = '<Replace this>' // This wallet must have ethers (which you can get here: https://www.alchemy.com/faucets/base-sepolia) and USDB (which you can get here https://app.blindpay.com/instances/<instance_id>/utilities/mint) to execute the transaction on step 2
  const instanceId = '<Replace this>'
  const blindpayApiKey = '<Replace this>'
  const bankAccountId = '<Replace this>'

  // BlindPay Api Configs
  const headers = {
    'Content-Type': 'application/json',
    'Authorization': `Bearer ${blindpayApiKey}`
  }

  // 1 Step: Create a quote
  const fiftyDollars = 5000
  const quoteBody = {
    bank_account_id: bankAccountId,
    currency_type: 'sender',
    cover_fees: false,
    request_amount: fiftyDollars,
    network: 'base_sepolia', // "sepolia", "base_sepolia", "arbitrum_sepolia", "polygon_amoy"
    token: 'USDB' // on development instance is always "USDB"
  }
  const createQuote = await fetch(`https://api.blindpay.com/v1/instances/${instanceId}/quotes`, { headers, method: 'POST', body: JSON.stringify(quoteBody) })
  const quoteResponse = await createQuote.json()

  // 2 Step: Approve tokens
  const provider = new ethers.JsonRpcProvider(rpcProviderUrl, quoteResponse.contract.network)
  const yourWallet = new ethers.Wallet(walletPrivateKey, provider)
  const contract = new ethers.Contract(quoteResponse.contract.address, quoteResponse.contract.abi, provider)
  const contractSigner = contract.connect(yourWallet)

  await contractSigner.approve(
    quoteResponse.contract.blindpayContractAddress,
    quoteResponse.contract.amount,
  )

  // 3 Step: Execute payout
  const senderWalletAddress = await yourWallet.getAddress()
  const payoutBody = {
    quote_id: quoteResponse.id,
    sender_wallet_address: senderWalletAddress
  }
  const executePayout = await fetch(`https://api.blindpay.com/v1/instances/${instanceId}/payouts/evm`, { headers, method: 'POST', body: JSON.stringify(payoutBody) })
  const payoutResponse = await executePayout.json()

  res.send(payoutResponse)
})

/* istanbul ignore next */
app.listen(3000)
console.log('Express started on port 3000')
```

::

Now run you can run the code using the following command:

```bash
node index.js
```

You can now access the application at [http://localhost:3000](http://localhost:3000){target="\_blank"} to see the result.

::
