Skip to main content

Automations

Automations allow businesses to set up automatic onramps, offramps, or stablecoin swaps that are triggered upon receiving funds—without requiring a manual transfer request.

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)
note

Automations can also be created in the Brale Dashboard on the Automations tab.

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.

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
Request
{
"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.

Response
{
"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.

Listing Automations for a Customer

Retrieve all automations associated with a customer Account.

GET
https://api.brale.xyz/accounts/{account_id}/automations
Response
{
"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}
Response
{
"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"
}