BRS (BRL stablecoin)

BRS is a 1:1 Real-backed stablecoin on Solana. How users get it, how to move it, and how to pay PIX from it.

BRS is Nora Finance's Brazilian Real stablecoin: minted 1:1 against BRL, fully reserved with public attestations, issued by licensed and KYB-verified minters. It lives on Solana only today.

FieldValue
Peg1 BRS = R$ 1,00
Networksolana
MintBRSxQRUaGswjLs7ewcH7uXj3r7SgmfKSSLLXyCKHZtUo
Decimals6
Minimum per mintR$ 5,00
Flag requiredNORA_RAIL (per account)

Always match BRS by mint address, never by symbol. An unrelated token also called BRS exists on Solana; a symbol lookup can read the wrong balance.

The three rules

  1. 1:1, no spread on the mint. Pay R$ 100 → receive 100 BRS. There is no FX leg and, by default, no on-ramp fee: Hodle absorbs the PIX cash-in cost.
  2. BRS is only delivered to the user's own Hodle Solana wallet. There is no destination field when buying — a third-party address is refused.
  3. To send BRS anywhere else, use transfer. That is the only way BRS leaves the Hodle wallet as a token.

Getting BRS (on-ramp)

BRS is bought in the Hodle app (PIX → BRS), not through /api/deposit/asset, which does not accept asset: "BRS".

The reason is rule 2. Nora mints only to wallets that hold an on-chain authorization grant, and Hodle pays for each grant, so the destination is always a Solana wallet the account already owns. Requesting an address the user does not own fails with:

rejected destination
{ "success": false, "error": "BRS só pode ser recebido em uma carteira Solana da própria conta" }

The account must therefore have a Solana wallet before buying. Delivery is asynchronous: the PIX settles, Hodle forwards the amount to Nora (Nora only accepts funds from Hodle, never from the end customer), Nora mints, and the purchase closes when the mint confirms on-chain. Amounts below R$ 5,00 net are rejected up front — that floor is enforced by the mint contract and cannot be waived.

Pricing

SetupUser paysUser receives
DefaultR$ 100100 BRS
Cost pass-through enabled (BRS_FEE_PASSTHROUGH)R$ 100100 BRS minus the PIX cash-in cost and the account's markup

Ask Hodle which mode your account is on before quoting BRS to your users.

Moving BRS — POST /api/wallet/transfer

POST /api/wallet/transfer
{
  "recipientAddress": "7xKX...gAsU",
  "asset": "BRS",
  "network": "solana",
  "value": 5000,
  "walletPin": "123456",
  "protectedSymmetricKey": "..."
}
  • network must be solana; asset must be BRS.
  • Signed as an SPL transferChecked with the user's own key. Hodle's master wallet pays the network fee and, on a first transfer to a fresh recipient, the rent of the recipient's associated token account — the user never needs SOL.
  • Not ledger-backed: the balance is enforced on-chain, so the wallet must actually hold the BRS.
  • recipientAddress can be any Solana address. Use toSubAccountId instead to move BRS between two of your own subaccounts.

Without NORA_RAIL the call returns 403:

403 Forbidden
{ "success": false, "error": "BRS is not enabled for this account. Please send a message to support." }

Paying PIX from BRS — POST /api/wallet/payout

POST /api/wallet/payout
{
  "value": 5000,
  "network": "solana",
  "asset": "BRS",
  "pixKey": "[email protected]",
  "walletPin": "123456",
  "protectedSymmetricKey": "..."
}
  • Zero fee, 1:1. Nora burns exactly value from the user's wallet and pays exactly value as PIX, so fee comes back as "0.00". No FX rate is applied (for USDT/USDC the same call converts at the current rate).
  • The wallet must hold enough BRS to cover value; otherwise the call returns 400 before anything moves.
  • pixKey only — qrCode returns 400 on the default rail, because Nora pays the fiat leg to a PIX key. Accounts on the BETA_NORA rail accept both: Hodle pays the customer from its own account (key or BR Code) in seconds and settles with Nora afterwards. Ask Hodle which rail your account is on.
  • Minimum R$ 5,00 (value: 500), enforced by the mint contract.
  • Requires NORA_RAIL in addition to WALLET_PAYOUT_API; the response is 403 otherwise.
  • Returns 202. On the default rail the PIX leg is Nora's and it is slow — ~18 minutes end to end in production — so poll GET /api/wallet/payout/{transactionId} or consume the payout webhooks rather than expecting a fast settlement. On the BETA_NORA rail Hodle pays the customer immediately and reconciles with Nora in the background.
  • The burn is irreversible. If Nora ends the payout non-completed, Hodle cannot reverse it — recovery is Nora's own refunded status.

Limitations

  • /api/wallet/get does not expose Solana yet. Solana addresses and BRS balances are absent from its addresses and balances arrays — read them on-chain or reconcile via the account statement.
  • No sandbox. The sandbox settles on Base Sepolia; Solana and BRS are production-only.
  • Solana only. Nora lists Ethereum as upcoming; Hodle supports no other BRS network today.

See also