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 employer
For each employer using your product, create a business customer.Request
POST /customers/{id}/tos) and complete KYB. See Business verification for the full onboarding flow.
Step 3: Fund the employer’s wallet
Once the employer’s USD account isACTIVE, create an on-ramp transaction with the exact amount the employer plans to deposit. The response includes wire instructions for that specific deposit. Share them with the employer’s finance team. When the wire lands matching the amount, Lumx converts USD to stablecoin and credits the employer’s wallet.
Request
Each deposit must be matched to an on-ramp transaction created in advance with the exact amount.
onramp.success webhook to know the moment the wallet is funded and ready to run payouts. For the full deposit flow by rail, see Global accounts.
Step 4: Register each payee’s destination
For each employee or contractor the employer wants to pay, register a destination under the employer’s customer record. Setholder.relationship to EMPLOYEE so the destination is correctly categorized for compliance. The taxId format varies by country; see Tax IDs by country and Coverage for the full list of supported rails and currencies.
- PIX (BRL)
- SPEI (MXN)
- ACH (USD)
- FEDWIRE (USD)
- SEPA (EUR)
- SWIFT (international)
Request
destinations.approved webhook to know when a payee is ready to receive payouts. See Destinations for the full reference.
Step 5: Run payroll
For each approved payee, create an off-ramp transaction debiting the employer’s wallet. Usepurpose: "PROFESSIONAL_SERVICES" for contractor and salary payments (the closest available code; there’s no dedicated payroll purpose), or EXPENSES_REIMBURSEMENT for reimbursements. See Purpose codes for the full list.
Request
Response
Idempotency-Key each time. There’s no batch endpoint, so run the calls in parallel from your job runner if you need to push a full payroll cycle at once.
Step 6: Track payout status
Each off-ramp transaction follows this lifecycle:TRANSFERRING_STABLECOIN → TRADING → TRANSFERRING_FIAT → SUCCESS
Subscribe to the offramp.success and offramp.failed webhooks to reconcile payouts as they complete and surface status back to the employer in your product. See Webhooks and the Transactions lifecycle reference.
Related resources
Global accounts
Fund the employer’s wallet via local fiat rails.
Destinations
Holder relationships and verification.
Transactions
Off-ramp lifecycle and purpose codes.
Off-ramp API
Full API reference for off-ramp transactions.