On/off-ramp provider contract terms are the clauses that decide what a provider owes you when a quote, a payout or a balance goes wrong: how firm a quote is, what fees and minimums apply, who holds the money, what gets refunded, how compliance holds are handled, and how you leave.
Choosing is covered in choosing a stablecoin infrastructure provider and leaving in migrating a stablecoin payout provider. Here the paper has arrived, so each term comes with a sandbox test.
Which 12 terms should an on/off-ramp provider contract cover?
These twelve, in roughly the order they cost money. The last column is the one most checklists skip: a provider can agree to a clause and still behave differently in the API.
The 12 terms, what to ask for, the red flag, and a test to run before signing.
# | Term | Ask for | Red flag | Test before signing |
1 | Quote firmness | An accepted quote executes at the quoted rate and fees | "Rates are indicative until settlement" | Execute a locked quote and compare the receipt |
2 | Quote window and last look | Expiry returned with every quote, and a written last look policy | Window only in a PDF appendix, or "at our discretion" | Let a quote expire, then submit it; expect a refusal, not a reprice |
3 | Fee schedule and change notice | Every fee by rail and direction, and a notice period before any change | Fees "as published from time to time" | Read the fee breakdown on a sandbox receipt |
4 | Minimums and volume tiers | A minimum only with a ramp-up period and a scheduled tier review | Shortfall fee with no benefit | Model month one and a slow month against the clause |
5 | Custody and funding | Who holds funds at each step, and whether you must pre-fund | Unclear who holds funds between steps | Trace one transaction and note who holds the money at each status |
6 | Refunds and failed payouts | Destination and trigger, with timeline and cost per rail | "Refunds processed as available" | Force a failed payout and watch where the money goes |
7 | Settlement commitments and incidents | Per-rail windows, a definition of settled, and notice when a rail degrades | One number for every rail | Compare contract windows with the published cut-offs |
8 | Compliance holds and limits | A response clock, a named contact and the outcomes, plus how limits are raised | No timeline, no notice | Read the hold and limit docs, then ask what the contract adds |
9 | Sanctions and compliance obligations | Which party screens what, and the prohibited uses | Obligations only on you | Check your flows against the prohibited-use list |
10 | Records and data | Full history through the API and an export on request | Records only through support tickets | Pull your sandbox history through the API |
11 | Liability and indemnity | A cap above a month of fees (our rule of thumb), with a carve-out for the provider's own fault | Liability capped at a week of fees | Ask for the cap in currency terms |
12 | Term, renewal and exit | Initial term, renewal mechanism, notice period, return of funds, no exit fee | Auto-renewal with a long notice window, funds frozen during notice | Ask for the exit sequence in numbered steps |
On Lumx, the first three tests run on real behavior in the sandbox: locked quotes carry an expiry and a finalExchangeRate, and the receipt on a completed transaction splits the fee into a Lumx line and a partner line. The sections below say what Lumx does on the other terms.
Quote firmness, quote window and last look
Tie the quote clause to the API, not to a rate sheet. A usable clause says the provider executes an accepted quote at the rate and fees it returned, before the stated expiry. Anything softer is a price display.
Two details separate good clauses from decorative ones. The expiry must travel with the quote, so your system can read it and your customer sees a countdown that matches reality. And the clause must say whether the provider can decline an accepted request. That right has a name, last look.
The FX Global Code defines it as a practice "whereby a Market Participant receiving a trade request has a final opportunity to accept or reject the request against its quoted price". Its Principle 17 says participants who use it "should be transparent regarding its use and provide appropriate disclosures to Clients", including the typical time taken to decide. For a payout, a rejection after acceptance is a late salary or supplier payment. Ask for firm quotes, or at least a disclosed policy and a rejection rate you can monitor.
On Lumx, a locked rate fixes the conversion for 30 seconds, 1 minute or 5 minutes. The 30-second lock carries no fee and the longer ones include a fee for volatility risk. The quote returns expiresAt, and if the lock lapses before the transaction is submitted the exchangeRateId is no longer valid and a new rate has to be requested.
Fees, minimums and volume tiers
The fee clause has two jobs: make every charge visible and make every change slow. That means a schedule by rail and direction, the FX margin stated apart from the per-transaction fee, a notice period before any increase and the right to leave without penalty if you do not accept it.
An illustration with invented numbers, not a Lumx price. A provider charges 0.25% per transaction with a USD 2,000 monthly minimum. In month one you move USD 200,000, so usage fees are USD 500 and the minimum adds USD 1,500 for volume you have not yet ramped. A ramp-up clause that waives the minimum for the first months removes that charge. A tier review does the other half: at USD 1,500,000 a month the same 0.25% is USD 3,750, the minimum stops binding, and the tier should lower the rate. Separately, a rise of 0.05 percentage points on that volume costs USD 750 a month, which a notice clause (60 days is our rule of thumb) turns into a planned repricing.
A minimum is acceptable with a ramp-up period, a tier schedule and a review date. With a shortfall fee and nothing in return it is a red flag. How the spread, the fee and the partner fee stack up is in how stablecoin payout pricing works.
On Lumx, the standard agreement has a monthly minimum, a ramp-up period that waives it in the first months, a quarterly review of volume tiers and no setup fee. Fees you add for your own revenue are set as partner fees, in basis points or as a flat amount, and show as their own line next to the Lumx fee on the receipt.
Who holds the money, and what a refund has to say
For custody, ask the provider to state who holds funds at each step of a transaction, and whether you must pre-fund before payouts. With a custodial provider the balances sit with the provider between steps. That is not wrong, but it is an exit and insolvency question, so the contract should say how balances come back and in what form. If the answer is "a partner holds them", ask for the partner's name. A provider that touches virtual assets is usually a virtual asset service provider, so confirm in writing which regulated entity sits in each country. A second provider can limit that exposure: see using two stablecoin providers.
For refunds, name the destination, the trigger and the clock per rail. Four questions cover it:
Where do funds go when a payout cannot be delivered?
Which cases refund automatically and which need a person?
How long does each take?
Who pays network or bank costs on the return?
On Lumx, each customer has a wallet on every supported blockchain, enabled once the customer is approved, and it holds stablecoin balances between on-ramps and off-ramps. Lumx is custodial: wallets are held by BitGo, which carries insurance, with every client segregated and no omnibus account, and the standard agreement includes a return-of-funds sequence on exit. There is no pre-funding of settlement accounts: conversion and settlement happen when you start the transaction. See what a custodial wallet is and the custodial wallets page. For refunds on the collection side, an on-ramp deposit that lands after the transaction has expired is returned to the original sender on the same rail it arrived on.
Settlement, compliance holds and compliance obligations
Settlement commitments belong in an annex per rail, because one global number hides the corridor that matters to you. Ask what counts as settled and for notice when a rail degrades.
Compliance holds need the same treatment. A flagged transaction pauses while the provider's compliance team asks questions, so the clause should say how you are contacted, how long you have to answer and what happens if you do not. Limits belong here too: the caps per transaction, per day and per month, and how a raise is requested. The reasons payouts stall in review are in why stablecoin payouts get rejected.
The compliance obligations clause allocates the work: who verifies your customers, who screens counterparties, which purposes and sectors are prohibited, and what each side reports. Get the prohibited-use list in writing.
On Lumx, settlement targets and cut-offs are published by rail, with the numbers in payout limits and cut-offs by rail, and the public service level agreement is on lumx.io. Lumx is compliant with SOC 2 and ISO 27001 but not yet certified, and runs pentests. Transactions flagged by monitoring are put on hold as an RFI (request for information, a compliance hold that asks for a document before a transaction clears), compliance reaches out by email or Slack, and a hold on any transaction that goes unanswered for 24 hours may be refunded to the sender. A limit increase request is not a transaction RFI unless it is needed to approve one. Limits are set per transaction type and readable per customer with used and remaining amounts, and a transaction over a limit is refused with a TRANSACTION_LIMIT_EXCEEDED code rather than delayed. Which countries Lumx serves, and under which entity, is on the supported countries page and the operator map.
Records, liability and the way out
Records come first, because you will use them every month. Ask for the full history of your transactions through the API, with fee breakdowns and status timestamps, and an export on request in a machine-readable format that stays available after termination.
Ask for the cap in currency terms, since a cap set at last month's fees can be smaller than one payout run. Ask that it does not apply to the provider's own gross failures, and ask what the provider indemnifies: a sanctions breach on its side, a data incident on its side, or a payout sent to the wrong beneficiary by its error.
Term, renewal and exit close the contract. Ask for the initial term, how renewal works, and a notice period long enough to move customers and bank accounts. Ask for the return-of-funds sequence in numbered steps: in what form (stablecoin to a named wallet, or fiat to a named account), on what timeline, at what cost. A provider that cannot write it down has not thought about it.
On Lumx, each transaction can be read through the API with its receipt, and every status change is delivered as a signed webhook, retried with exponential backoff for up to eight attempts, with a webhook-id header to deduplicate. The standard agreement also covers a history and address export and a liability cap; fee-change notice is the term to raise with the Lumx team.
Which three terms should you fight for first?
Exit, custody and fee-change notice, in that order.
I would fight for the exit clause before the quote clause. Quote behavior can be tested in a sandbox within a week, and a provider that reprices will show it. The exit clause cannot be tested until you need it, and by then you have no bargaining room left. I recommend asking for a written return-of-funds sequence on the first call, so that you find out before an incident whether one exists.
Custody comes second because it sets how bad an exit can be. Fee-change notice comes third because it quietly moves your unit economics.
When negotiating these terms is the wrong move
Three cases. Without a pilot, you negotiate with a provider you have not seen fail, so run the sandbox tests first.
If your volume is small, expect standard paper. Your room is in choosing the provider whose standard terms already cover most of the twelve, so the table becomes a screening list.
And if the problem is a single corridor, a second provider for that corridor can cost less than a long redline of the first. The coverage page shows the corridors Lumx serves.
What these terms look like with Lumx
Lumx is stablecoin payments infrastructure for businesses that move money between Latin America and the rest of the world: one API to collect, hold, convert, and pay out in BRL, MXN, COP, USD, EUR, and GBP or in USDC and USDT, over local rails such as PIX, SPEI, PSE, Bre-B, ACH, FEDWIRE, SEPA, and Faster Payments, with SWIFT and on-behalf-of payments and collections (POBO and COBO) in USD, EUR, and GBP, plus named virtual accounts, custodial wallets, and KYB/KYC built in.
The commercial model is a monthly platform fee plus usage-based per-transaction fees, transparent FX on locked quotes, no pre-funding; no published plans. In the API you can check terms 1 to 3 on the quote and receipt, term 5 on the wallet, terms 7 and 10 on statuses and webhooks, and term 8 on limits.
KYB (know your business, the verification of a company and its owners) is part of the integration, and the payout itself is described on the global payments page. For terms the documentation does not decide, such as fee-change notice and renewal, bring the table above to the Lumx team.
Methodology and sources
Sources read on November 1, 2026:
The FX Global Code, Principle 17 on last look, text read in full.
The Lumx documentation on exchange rates, transactions, the read a transaction reference, partner fees, wallets, transaction limits, requests for information, cut-off times and webhooks.
The figures in the worked example are invented, not a Lumx price. Have counsel review the contract.
Verified on November 1, 2026. Operational context, not legal, tax, or investment advice.
Cover photo: Justin Zhu on Unsplash.
What should an on/off-ramp provider contract include?
Quote firmness and expiry, a fee schedule with change notice, minimums with a tier review, custody, refunds, settlement per rail, compliance hold timelines, sanctions duties, record access, liability limits and an exit. On Lumx, the standard agreement has a monthly minimum with a ramp-up period, a quarterly tier review and no setup fee.
Is an on/off-ramp quote binding, and what is last look?
It is binding only if the contract says so. Last look is the provider's final chance to reject an accepted request at its quoted price, and the FX Global Code asks participants that use it to disclose it. On Lumx, a locked rate holds for 30 seconds, 1 minute or 5 minutes, the 30-second lock has no fee, and an expired lock is refused and replaced by a new quote.
Should the contract include a monthly minimum?
Only with something in return, such as a ramp-up period or a lower tier. Otherwise it charges for volume you have not built. On Lumx, the standard agreement has a monthly minimum, a ramp-up period that waives it in the first months and a quarterly review of volume tiers.
What refund and exit terms should you ask for?
Where funds go when a payout fails, who pays return costs, how long you have to answer a compliance request, plus a return-of-funds sequence in numbered steps. On Lumx, a transaction on hold for an RFI may be refunded to the sender after 24 hours without an answer, a late on-ramp deposit is returned on the same rail, and every transaction can be read through the API.





