BUSINESS customer with "accounts": ["BRL"] through POST /customers, complete KYB, and wait for the account to reach ACTIVE. The account is issued by a Lumx banking partner in the customer’s name, and it receives Pix. A company incorporated outside Brazil can hold it without a local entity in Brazil.
This guide covers the calls from customer creation to the first Pix. To turn those Pix payments into stablecoin, see Collect BRL via Pix and settle in USDC or USDT.
How it works
- Create the business customer and request the BRL account in the same call.
- Have the company accept the terms of service.
- Complete KYB: company details, documents, and associated parties.
- Start the verification and wait for
APPROVED. - The BRL account is provisioned and becomes
ACTIVE. - Collect Pix into the account.
Prerequisites
- An API key from the Dashboard and the sandbox base URL, https://api-sandbox.lumx.io.
- The company’s legal name, tax ID (CNPJ for a Brazilian company), incorporation date, country, and email.
- Its UBOs, shareholders, and at least one representative, with their documents. See Business Verification (KYB).
- A webhook endpoint, set up under Developers > Webhooks in the Dashboard. See Webhooks.
Create the customer and the account
Send aPOST request to /customers with type set to BUSINESS and accounts set to ["BRL"].
Request
Response
id and the account id. The account starts in AWAITING_ONBOARDING. Customer creation also provisions a wallet on every supported blockchain, but the wallets array only appears once the customer is APPROVED. See Create a Customer.
Request fields
Complete KYB
A business customer cannot transact until KYB isAPPROVED. The steps, in order:
POST /customers/{id}/tosreturns aurlfor the company to accept the terms of service. The link expires after 24 hours. See Terms of Service.PATCH /customers/{id}/additional-informationsends the company’s activity, revenue, source of funds, and counterparties.POST /customers/{id}/documentsuploadsINCORPORATION_ARTICLES,SHAREHOLDER_REGISTRY,DIRECTORS_REGISTRY, andPROOF_OF_ADDRESS.POST /customers/{id}/associated-partiesadds the UBOs, shareholders, and representatives. At least one of each role is required before you start.POST /customers/{id}/documentsagain, withassociatedPartyId, uploads each party’s documents.POST /customers/{id}/verificationsstarts the review and returns a verificationid.
GET /customers/{id}/verifications/{verificationId} or, better, subscribe to the customer.* webhooks. Lumx targets two business days for the KYB review.
Details for every step, including the full body for each associated party, are in Business Verification (KYB).
Watch the account become active
The account has its own status, separate from the customer’s.
For BRL, provisioning completes right after the customer is
APPROVED, foreign companies included. Subscribe to the account.active webhook to know the moment the account is ready. The payload is the account itself:
account.active
GET /accounts?customerId={customerId}. Each item has id, customerId, status, currency, createdAt, and updatedAt.
The webhooks to handle during onboarding:
If an account moves to
RFI, you are told what is missing. See RFI.
Receive Pix
The account object carries status and currency. It does not return payment coordinates. A BRL account receives Pix through a Pix code, thebrCode, which Lumx generates in one of two ways:
Both convert the BRL to
USDC or USDT and deliver it on-chain. Request one, share the brCode with the payer, and follow the conversion through the onramp.* webhooks. The rule route, one static Pix QR code for every deposit, is in Autoconversion Rules. The step-by-step for both routes is in Collect BRL via Pix and settle in USDC or USDT.
Pix runs 24/7/365. See Payment rail cut-off times.
Limits
Each customer hasonramp, offramp, and transfer limits. Read the current usage with GET /customers/{id}?includeTransactionLimits=true. A transaction above a limit returns 422 with TRANSACTION_LIMIT_EXCEEDED. See Transaction Limits.
Test in sandbox
In sandbox, the last digit of the customer’staxId sets the simulated verification outcome: 1 stays NOT_STARTED, 2 returns RFI, 3 returns FINAL_REJECTION, and any other digit is APPROVED. The webhooks fire almost instantly, so you can run the whole flow end to end.
Related resources
Accounts
Account schema, lifecycle, and activation timelines.
Business Verification (KYB)
Every KYB call, with the full request bodies.
Collect BRL via Pix
Receive Pix and settle in USDC or USDT.
Webhooks
Event types, signatures, and retries.