> ## Documentation Index
> Fetch the complete documentation index at: https://docs.breet.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Fintech

> Accept crypto and stablecoin deposits in your fintech app and auto-settle to local bank accounts with the Breet API.

Let your users fund wallets, savings accounts, or virtual cards with crypto and stablecoins. Breet generates deposit addresses, tracks incoming transactions, and notifies your app via webhooks so you can credit balances instantly.

## How it works

<Steps>
  <Step title="Generate a deposit address">
    Call the [generate-address](/api-reference/crypto-wallet/generate-wallet-address) endpoint for a specific asset. Each address is permanent and unique to your user. You can also label the address using a unique identifier.
  </Step>

  <Step title="Show the address to your user">
    Display the wallet address in your app's funding flow. The user sends crypto from any external wallet.
  </Step>

  <Step title="Receive a webhook notification">
    When the transaction is detected on-chain, Breet sends a [webhook](/webhooks) to your server with the deposit details, amount, and status.
  </Step>

  <Step title="Credit the user's balance">
    Parse the webhook payload, match it to the user, and credit their in-app balance.
  </Step>

  <Step title="Settle funds (optional)">
    This step is optional and depends on how you want to handle funds after a deposit:

    * **Without auto-settlement**: deposits are converted and held in your wallet in your chosen currency (USD, NGN, or GHS). You can view the balance on your dashboard and withdraw manually whenever you're ready.
    * **With per-address auto-settlement**: each deposit is automatically converted and paid out to the bank account linked to that specific address. Enable it via the API. See the [auto-settlement guide](/auto-settlement).
    * **With business-wide auto-settlement**: all deposits across all addresses are automatically withdrawn to a single destination (bank account). Enable it from your dashboard under **Settings > Automatic Settlement**.

    You can set your preferred holding currency from the dashboard under **Settings > Crypto Settings**. This determines the currency your wallet balance is held in when auto-settlement is off.
  </Step>
</Steps>

## Generate a deposit address

```bash theme={null}
curl -X POST "https://api.breet.io/v1/trades/sell/assets/ASSET_ID/generate-address" \
  -H "x-app-id: YOUR_APP_ID" \
  -H "x-app-secret: YOUR_APP_SECRET" \
  -H "X-Breet-Env: production" \
  -H "Content-Type: application/json" \
  -d '{"label": "user-12345"}'
```

Replace `ASSET_ID` with the identifier for the crypto asset you want to accept (e.g., BTC, ETH, USDT). Use the `label` field to tag addresses with your internal user ID for easy reconciliation. Each address is **permanent**, so you only need to generate it once per user per asset. Store the address and display it whenever the user wants to deposit.

<Tip>
  List available assets by calling [`GET /trades/assets`](/api-reference/assets/fetch-deposit-assets) to get valid asset IDs for your account.
</Tip>

## What Breet handles

* Generating and managing deposit wallet addresses
* Monitoring blockchains for incoming transactions
* Sending webhook notifications with transaction details
* Converting crypto to local fiat via auto-settlement
* Payouts to linked bank accounts

## What you handle

* Displaying the deposit address and instructions to your user
* Listening for and processing webhook events from Breet
* Mapping deposits to user accounts using the `label` or `destinationAddress`
* Crediting user balances in your application
* Communicating deposit status to your users

## Example user journey

1. Adeola opens her fintech app and taps **Fund account**.
2. She selects **USDT on Solana** as the funding method.
3. If this is Adeola's first deposit, the app calls Breet's [generate-address](/api-reference/crypto-wallet/generate-wallet-address) endpoint and stores the returned address. For future deposits, the app displays the same saved address since it is permanent.
4. Adeola copies the address and sends 50 USDT from her personal wallet.
5. Breet detects the transaction and sends a `trade.completed` webhook to the fintech app.
6. The app credits 50 USDT (or whatever equivalent) to Adeola's balance.
7. Adeola sees the funds in her account and can spend, save, or transfer them.

## FAQ

<AccordionGroup>
  <Accordion title="Do users interact with Breet directly?">
    No. Breet operates entirely behind the scenes. Your users see your app's interface, branding, and messaging throughout the funding flow. Breet provides the infrastructure and you control the experience.
  </Accordion>

  <Accordion title="Can I support multiple currencies per user?">
    Yes. Call the [generate-address](/api-reference/crypto-wallet/generate-wallet-address) endpoint once per asset to create a separate deposit address for each currency. A single user can have addresses for BTC, ETH, USDT, and any other [supported asset](/supported-assets) simultaneously.
  </Accordion>

  <Accordion title="How fast are deposits credited?">
    Deposit speed depends on blockchain confirmation times. Breet sends a `trade.pending` webhook as soon as the transaction is detected (mostly instantly), followed by `trade.completed` once it reaches the required number of confirmations. Most stablecoin deposits on fast networks like Solana complete within seconds.
  </Accordion>

  <Accordion title="Can I set up auto-settlement for all deposits?">
    Yes. Link a bank account to a wallet address and enable auto-settlement via [`PUT /trades/wallets/{id}/auto-settlement`](/api-reference/crypto-wallet/set-auto-settlement-status). Every deposit to that address will automatically convert to NGN or GHS and settle to the linked bank account. You can also enable business-wide auto-settlement from your dashboard. See the [auto-settlement guide](/auto-settlement) for the full details.
  </Accordion>
</AccordionGroup>
