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.
| Field | Value |
|---|---|
| Peg | 1 BRS = R$ 1,00 |
| Network | solana |
| Mint | BRSxQRUaGswjLs7ewcH7uXj3r7SgmfKSSLLXyCKHZtUo |
| Decimals | 6 |
| Minimum per mint | R$ 5,00 |
| Flag required | NORA_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, 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.
- 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.
- 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:
{ "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
| Setup | User pays | User receives |
|---|---|---|
| Default | R$ 100 | 100 BRS |
Cost pass-through enabled (BRS_FEE_PASSTHROUGH) | R$ 100 | 100 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
{
"recipientAddress": "7xKX...gAsU",
"asset": "BRS",
"network": "solana",
"value": 5000,
"walletPin": "123456",
"protectedSymmetricKey": "..."
}networkmust besolana;assetmust beBRS.- Signed as an SPL
transferCheckedwith 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.
recipientAddresscan be any Solana address. UsetoSubAccountIdinstead to move BRS between two of your own subaccounts.
Without NORA_RAIL the call returns 403:
{ "success": false, "error": "BRS is not enabled for this account. Please send a message to support." }Paying PIX from BRS — POST /api/wallet/payout
{
"value": 5000,
"network": "solana",
"asset": "BRS",
"pixKey": "[email protected]",
"walletPin": "123456",
"protectedSymmetricKey": "..."
}- Zero fee, 1:1. Nora burns exactly
valuefrom the user's wallet and pays exactlyvalueas PIX, sofeecomes back as"0.00". No FX rate is applied (forUSDT/USDCthe same call converts at the current rate). - The wallet must hold enough BRS to cover
value; otherwise the call returns400before anything moves. pixKeyonly —qrCodereturns400on the default rail, because Nora pays the fiat leg to a PIX key. Accounts on theBETA_NORArail 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_RAILin addition toWALLET_PAYOUT_API; the response is403otherwise. - Returns
202. On the default rail the PIX leg is Nora's and it is slow — ~18 minutes end to end in production — so pollGET /api/wallet/payout/{transactionId}or consume the payout webhooks rather than expecting a fast settlement. On theBETA_NORArail 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
refundedstatus.
Limitations
/api/wallet/getdoes not expose Solana yet. Solana addresses and BRS balances are absent from itsaddressesandbalancesarrays — 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
- Assets & Networks — every asset and the endpoints that move it
- Wallet Transfer · Wallet Payout
- Webhooks — deposit and payout events