Step 1: Generate your API key
Head over to dashboard.lumx.io. Once logged in, generate a new API key and store it securely. See Authentication for details.Step 2: Onboard the sender
For each sender using your product, create an individual customer. Provision an account in their home currency so they can fund the wallet via a local rail. Senders must accept Lumx’s terms of service (POST /customers/{id}/tos) and complete KYC before they can move funds.
Request
Step 3: Fund the sender’s wallet
Once the sender’s account isACTIVE, create an autoconversion rule for it, using the account’s id as accountId. You do this once per sender: the response’s sourceDepositInfo carries the deposit details for their currency (ACH and wire details for USD, a static PIX brCode for BRL, a CLABE and memo for MXN, an IBAN for EUR, a sort code and account number for GBP). Show them in your app, and every deposit the sender makes is converted to stablecoin and credited to their wallet, whatever the amount.
Request
onramp.success webhook to know the moment the wallet is funded and the sender can confirm the remittance. For the response, the deposit details per currency, and when to create a one-off on-ramp instead, see Global accounts.
Step 4: Register the recipient’s destination
Register a destination for the recipient under the sender. Useholder.relationship of RELATIVE for family or FRIEND for friends. This is how the recipient is categorized for compliance. See Coverage for the full list of supported rails and currencies.
- PIX (BRL)
- SPEI (MXN)
- SEPA (EUR)
- FPS (GBP)
- SWIFT (international)
Request
destinations.approved webhook to know when a recipient is ready to receive funds. See Destinations for the full reference.
Step 5: Lock an exchange rate
Senders want to know exactly how much the recipient will receive before confirming the transfer. Fetch a locked exchange rate first and reference itsid in the off-ramp request to guarantee the conversion price.
Request
Response
finalTargetAmount to the sender. If they confirm before expiresAt, the off-ramp will settle at finalExchangeRate. See Exchange Rates.
Step 6: Send the remittance
Create an off-ramp transaction debiting the sender’s wallet. Reference the lockedexchangeRateId and use purpose: "BILLS" (the closest available code for P2P remittances; see Purpose codes).
Request
Response
Step 7: Notify the sender on completion
Each off-ramp follows this lifecycle:TRANSFERRING_STABLECOIN → TRADING → TRANSFERRING_FIAT → SUCCESS
Subscribe to offramp.success and offramp.failed webhooks to push a confirmation back to the sender in your app the moment the recipient receives the funds. See Webhooks.
Related resources
Global accounts
Provision the sender’s funding account.
Exchange Rates
Lock FX rates for predictable payouts.
Destinations
Holder relationships and rail-specific identifiers.
Transactions
Off-ramp lifecycle and purpose codes.