# Smart Transfers overview

No Sandbox environment
Smart Transfers isn't available in Sandbox at the moment. To test your integration, use Production with real accounts.

With Belvo's Smart Transfers, your user gives you a **single authorization** at their bank, and you can then make **multiple Pix transfers** from their account into **another account they hold**. You trigger each transfer whenever you need to, without sending the user back to their bank, as long as it stays within the limits the user approved.

Smart Transfers is built on Open Finance Brasil's *Transferências Inteligentes* (sweeping accounts) journey. In the Belvo API it is the `PIX_OF_SMART_TRANSFERS` payment method.

Funds can only move between the user's own accounts
Smart Transfers only moves money between accounts held by the **same person or company**:

- **Individual payer (CPF):** the beneficiary account must be held by the same CPF as the payer.
- **Business payer (CNPJ):** the beneficiary account must be held by a CNPJ with the same root (the first eight digits) as the payer.


This is an Open Finance Brasil rule for Transferências Inteligentes. If the beneficiary doesn't meet it, the Payment Authorization can't be created.

## How it works

Smart Transfers uses two objects:

| Object | What it is |
|  --- | --- |
| **Payment Authorization** | The user's standing consent, approved at their bank. It sets the beneficiary account and the limits you must stay within: an overall total, a per-transfer maximum, and optional daily, weekly, monthly, or yearly caps. It can also pin the exact account to debit, if you already know it. One authorization covers many transfers. |
| **Charge** | A single transfer you trigger against an `AUTHORIZED` Payment Authorization. Each Charge has its own amount, date, and statement description. |



```mermaid
sequenceDiagram
    participant App as Your application
    participant Belvo as Belvo
    participant Bank as User's bank

    App->>Belvo: Create a Payment Authorization
    Belvo-->>App: authorization_url
    App->>Bank: Redirect the user
    Note over Bank: User approves the limits once
    Belvo-->>App: Webhook: PAYMENT_AUTHORIZATION
    App->>Belvo: Get the authorization
    Belvo-->>App: status: AUTHORIZED

    loop Whenever you need to move funds
        App->>Belvo: Create a Charge
        Belvo->>Bank: Pix transfer request
        Belvo-->>App: Webhook: CHARGE
        App->>Belvo: Get the Charge
        Belvo-->>App: status: SETTLED (or FAILED)
    end
```

## Integration options

For Smart Transfers, we offer one integration option:

### Direct API

Use our Payments API (`Payments-BR.V2`) to create Payment Authorizations and Charges, and build the screens your user sees before they're redirected to their bank. Check out our dedicated Direct API (Smart Transfers) guide for the step-by-step instructions.

## Smart Transfers and Smart Collections

Smart Transfers works on its own: you decide when to trigger each Charge.

If you'd rather have Belvo watch the user's balance and tell you when there are enough funds to collect, see **[Smart Collections](/products/smart_collections_brazil/smart-collections-overview)**, which combines balance monitoring from our Aggregation product with Smart Transfers Charges.