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 autoconversion rule for it, using the account’s id as accountId. You do this once: the response’s sourceDepositInfo carries the ACH, Fedwire, and SWIFT details to share with the employer’s finance team, and every wire that lands is converted to stablecoin and credited to the employer’s wallet, whatever the amount.
Request
onramp.success webhook to know the moment the wallet is funded and ready to run payouts. For the response, the deposit details per currency, and when to create a one-off on-ramp instead, 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)
- FPS (GBP)
- 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.