The underpayment policy
Three zones, chosen because there is no refund path.
Why there is a policy at all
Moove has no Send endpoint. That is what makes Tollbooth safe to run multi-tenant — a leaked key cannot redirect money — and it also means there is no refund path. So a settlement that arrives short must never end with the payer holding nothing. The bands below trade a small amount of revenue for never stranding someone who actually paid.
The three zones
| received, as a fraction of asked | what is granted | charge status |
|---|---|---|
| ≥ 99.5% | The full pack | settled |
| 10% ≤ r < 99.5% | Credits scaled to what landed, floored at one | settled |
| < 10% | Nothing | pending — stays visible to the tenant |
The tolerance band exists because Moove documents a market-quote slippage tolerance of 0.10% Moove documentation; 0.5% absorbs it with room rather than punishing a payer for a route that filled a shade under quote. Below the floor the charge is left pending on purpose: with no refund it cannot be closed quietly, so reconciliation keeps raising it until a person decides. Both thresholds are configurable — see configuration.
Time passes
A pass has no credits to scale, so a short settlement scales its duration instead: a quarter of the money buys a quarter of the day.
Exactness
The ratio is computed on bigints in parts per million, so the decision itself involves no floating point. Scaled credits are floored, never rounded in the tenant’s favour. A receivedAmount of null is treated as full: a completed link with no figure to check is not evidence of a shortfall.
One trap the probes found: toAmount is normalised on read — a "1.00" comes back as "1". Comparisons are scale-aligned, so this is handled, but a naive string equality would report a false shortfall on a payment that was exactly right.measured
Whether it ever fires
For a payment link, Moove documents that the payer's wallet is debited enough to deliver your amount in full, and that the payer covers the fee.Moove documentation If that holds, the policy never fires on a clean payment.