Bitso is the largest crypto exchange in Mexico. The Juno platform lets businesses issue and redeem MXNB. MXNB is a stablecoin pegged 1:1 to the Mexican Peso, deployed on Arbitrum. Juno automatically triggers an issuance when a user deposits MXN via SPEI to a Juno-issued CLABE. This recipe shows how to combine Privy embedded wallets with the Juno API to build an MXNB onramp flow. It is most useful for centralized exchanges or fintech apps serving Mexico-based users. Using Privy and Juno, your app can:Documentation Index
Fetch the complete documentation index at: https://docs.privy.io/llms.txt
Use this file to discover all available pages before exploring further.
- Provision an embedded wallet for each user
- Guide users through Bitso’s KYB process
- Issue a CLABE to receive SPEI deposits
- Automatically mint MXNB when Juno receives MXN
- Withdraw MXNB to the user’s Privy wallet on Arbitrum
Prerequisites
- A Privy account with an app configured
- A Juno account with API credentials. See Juno’s guide to creating signed requests for how to generate your API key and Bearer token.
- Users must complete Bitso’s KYB process before minting or redeeming MXNB
SPEI and CLABE
SPEI (Sistema de Pagos Electrónicos Interbancarios) is Mexico’s interbank electronic payment network, operated by Banco de México. It enables near-instant MXN transfers between any Mexican bank account. CLABE (Clave Bancaria Estandarizada) is the standardized 18-digit account number used for SPEI transfers. Juno issues each user a dedicatedAUTO_PAYMENT CLABE. When MXN arrives at that CLABE, Juno automatically mints the equivalent MXNB to the user’s Juno balance.
All API examples use the Juno staging environment at
stage.buildwithjuno.com. Switch to
buildwithjuno.com for production.1. Complete KYB with Bitso
Before MXNB can be issued to a user, Bitso requires KYB (Know Your Business) verification. Your app should redirect users to the Bitso onboarding flow and track their verification status via the Juno API.Refer to Bitso’s KYB documentation for verification
requirements and endpoints. KYB approval is required before any issuance or redemption.
2. Create a CLABE for the user
Juno issuesAUTO_PAYMENT CLABEs — when MXN arrives via SPEI to a user’s CLABE, Juno automatically mints MXNB to that user’s Juno balance.
clabe value. Each CLABE is assigned to one user and must not be reused across different users.
3. Display the CLABE to the user
Your app must show the user the CLABE so they can initiate a SPEI transfer from their bank. Once Bitso receives the MXN deposit (minimum 100 MXN), MXNB is automatically minted to the user’s Juno balance.4. Create a Privy wallet for the user
Your app can create an embedded Ethereum wallet for the user via the Privy API. MXNB is deployed on Arbitrum, an EVM-compatible chain, so a standard Ethereum wallet can hold it.address. Juno uses this address as the MXNB withdrawal destination.
5. Register the Privy wallet as a blockchain account in Juno
Before withdrawing MXNB to the Privy wallet, your app must register the wallet address with Juno as a blockchain account.6. Withdraw MXNB to the Privy wallet
Once MXNB is in the user’s Juno balance, your app can withdraw it to the user’s Privy wallet on Arbitrum.compliance field is required. Pass an empty object {} for amounts under the travel rule threshold. Refer to Bitso’s travel rule documentation for larger amounts.
Juno docs
Learn more about MXNB issuances, redemptions, and withdrawals
Create a Privy wallet
API reference for provisioning embedded wallets

