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

# Automations

> Configure automatic onramps, offramps, and swaps that trigger when funds are received without manual transfer requests.

## Common Automation Flows

* **Fiat to Stablecoin (Onramp)** - Automatically mints stablecoins when a fiat deposit is received.
* **Stablecoin to Fiat (Offramp)** - Automatically converts stablecoins to fiat and withdraws to a bank account. *(Coming Q1 2026)*
* **Stablecoin to Stablecoin (Swap)** - Automatically swaps one stablecoin for another. *(Coming Q1 2026)*

<Tip>
  Automations can also be created in the Brale Dashboard on the Automations tab.
</Tip>

## Onramp Automation with Virtual Accounts

Automations provide a unique account number and routing number for wire transfers and ACH deposits. When funds are received, stablecoins are automatically minted to a pre-defined wallet address. Businesses can use automations to direct unique pre-funding coordinates to their customers, which mint stablecoins in a customer's wallet.

Here’s what happens end-to-end when you use an onramp automation:

1. **Create the automation**\
   You define `source.value_type` as `USD` and set a `destination` wallet and stablecoin (e.g., `SBC` on `solana`) via the API or Dashboard.
2. **Virtual account is provisioned**\
   Brale provisions a virtual account and populates `source.funding_instructions` with bank details (routing number, account number, bank name, beneficiary).
3. **Customer sends funds**\
   You share those bank details with your customer. They send a wire or ACH to the virtual account - no additional API call is required.
4. **Stablecoins are minted automatically**\
   When funds arrive, Brale automatically creates a `Transfer` (USD → stablecoin), mints the stablecoin, and sends it to the `destination.address_id` configured on the automation.
5. **Track activity via Transfers**\
   You can reconcile and monitor all onramp activity by querying Transfers for the account:\
   `GET /accounts/{account_id}/transfers`.\
   Transfers created by automations include `source.payment_details` when Brale has underlying payment metadata to expose. Use this to identify the sender and reconcile inbound fiat payments. See [Transfers — `source.payment_details`](/key-concepts/transfers#sourcepayment_details) for details.

## Creating an Automation

Create an automation to receive USD and automatically mint SBC to a Solana wallet.

**POST** `https://api.brale.xyz/accounts/{account_id}/automations`

```json Request theme={null}
{
  "name": "XYZ Onramp",
  "source": {
    "value_type": "USD"
  },
  "destination": {
    "address_id": "2MhCCIHulVdXrHiEuQDJvnKbSkl",
    "value_type": "SBC",
    "transfer_type": "Solana"
  }
}
```

Automations are opened in a pending state and automatically transition into processing. Once virtual accounts are created and the automation is ready to use, it will transition to a completed status.

```json Response theme={null}
{
  "id": "35kVg1llbsOBYvx9XKr9eOtsD9z",
  "name": "Customer ABC Automation",
  "status": "pending",
  "source": {
    "transfer_type": null,
    "value_type": "USD"
  },
  "destination": {
    "transfer_type": "solana",
    "address_id": "35LWXNTO2jem13nXCLyciFdi162",
    "value_type": "ARB"
  },
  "updated_at": "2025-11-20T15:56:03.531196Z",
  "created_at": "2025-11-20T15:56:03.531196Z"
}
```

When an automation becomes active, the `source.funding_instructions` object is populated with the virtual account’s bank details (routing number, account number, beneficiary name, etc.). These are the coordinates you share with your customer to fund the automation.

## Branded Automations

Branded Automations let you control the beneficiary name shown on funding instructions for a virtual account.

With Branded Automations, you can control which business name appears on funding instructions by adding a `brand` object to the create request:

| Field   | Where | Type   | Description                                                                                                                                                                     |
| :------ | :---- | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `brand` | Body  | object | `{ "account_id": "<ACCOUNT_ID>" }` — your own account or a managed account whose business name and address will appear as the beneficiary on wire and ACH funding instructions. |

```json Request theme={null}
{
  "name": "XYZ Onramp",
  "source": { "value_type": "USD" },
  "destination": {
    "address_id": "2MhCCIHulVdXrHiEuQDJvnKbSkl",
    "value_type": "SBC",
    "transfer_type": "Solana"
  },
  "brand": { "account_id": "<ACCOUNT_ID>" }
}
```

When the automation becomes active, `beneficiary_name` in `source.funding_instructions` will reflect that account’s business name.

## Listing Automations for a Customer

Retrieve all automations associated with a customer Account.

**GET** `https://api.brale.xyz/accounts/{account_id}/automations`

```json Response theme={null}
{
  "automations": [
    {
      "id": "35kVg1llbsOBYvx9XKr9eOtsD9z",
      "name": "Customer ABC Automation",
      "status": "active",
      "source": {
        "transfer_type": null,
        "value_type": "USD",
        "funding_instructions": {
          "bank_address": "123 Example St, Example City, NY 10001",
          "beneficiary_address": "456 Sandbox Ave, Suite 100, Example City, IA 50000",
          "beneficiary_name": "Example Payments Inc",
          "routing_number": "000111222",
          "account_number": "100123456789",
          "bank_name": "Example Bank",
          "memo": null
        }
      },
      "destination": {
        "transfer_type": "solana",
        "address_id": "35LWXNTO2jem13nXCLyciFdi162",
        "value_type": "ARB"
      },
      "updated_at": "2025-11-20T15:56:05.017508Z",
      "created_at": "2025-11-20T15:56:03.531196Z"
    },
    {
      "id": "35kVg1llbsOBYvx9XKr9eOtsD9z",
      "name": "Customer XYZ Automation",
      "status": "active",
      "source": {
        "transfer_type": null,
        "value_type": "USD",
        "funding_instructions": {
          "bank_address": "123 Example St, Example City, NY 10001",
          "beneficiary_address": "25 Main Ave, Suite 100, Example City, IA 50000",
          "beneficiary_name": "Company ABC",
          "routing_number": "000111222",
          "account_number": "000123456789",
          "bank_name": "Example Bank",
          "memo": null
        }
      },
      "destination": {
        "transfer_type": "solana",
        "address_id": "35LWXNTO2jem13nXCLyciFdi162",
        "value_type": "ARB"
      },
      "updated_at": "2025-11-20T15:56:05.017508Z",
      "created_at": "2025-11-20T15:56:03.531196Z"
    }
  ]
}
```

## Retrieve an Automation

Retrieve a specific Automation.

**GET** `https://api.brale.xyz/accounts/{account_id}/automations/{automation_id}`

```json Response theme={null}
{
  "id": "35kVg1llbsOBYvx9XKr9eOtsD9z",
  "name": "Customer XYZ Automation",
  "status": "active",
  "source": {
    "transfer_type": null,
    "value_type": "USD",
    "funding_instructions": {
      "bank_address": "123 Example St, Example City, NY 10001",
      "beneficiary_address": "25 Main Ave, Suite 100, Example City, IA 50000",
      "beneficiary_name": "Company ABC",
      "routing_number": "000111222",
      "account_number": "000123456789",
      "bank_name": "Example Bank",
      "memo": null
    }
  },
  "destination": {
    "transfer_type": "solana",
    "address_id": "35LWXNTO2jem13nXCLyciFdi162",
    "value_type": "ARB"
  },
  "updated_at": "2025-11-20T15:56:05.017508Z",
  "created_at": "2025-11-20T15:56:03.531196Z"
}
```
