Payment minimums
OrcaRail enforces per-network minimum transfer amounts for payments. These minimums are used to validate the payment amount and to floor support and commission fee amounts so that tiny fees do not create dust on-chain.
Environment variables
Minimums are configured per chain type via environment variables. Values are in the network’s smallest unit (lamports, wei, sats).
| Variable | Chain | Default | Description |
|---|---|---|---|
PAYMENTS_MIN_AMOUNT_SOLANA_LAMPORTS | Solana | 890880 | Minimum transfer in lamports. |
PAYMENTS_MIN_AMOUNT_EVM_WEI | EVM (Ethereum, Polygon, Base, etc.) | (none) | Optional. When set, minimum in wei. |
PAYMENTS_MIN_AMOUNT_BITCOIN_SATS | Bitcoin | 546 | Minimum in satoshis (dust limit). |
When a variable is not set for a chain type, the API does not enforce a minimum for that chain (except Solana and Bitcoin, which use the defaults above). EVM has no default; if you want a minimum on EVM, set PAYMENTS_MIN_AMOUNT_EVM_WEI.
How the minimum is used
1. Payment amount validation
When creating a payment link or when the payer’s amount is validated, the API checks that the payment amount is not below the minimum for the payer’s network.
- For native tokens (e.g. SOL, ETH, BTC), the minimum is compared directly in the token’s smallest unit (lamports, wei, sats).
- For non-native tokens (e.g. USDC on Ethereum), the minimum is defined in the chain’s native unit; the API converts it to the payer token’s units using USD price so that the same economic minimum applies. If the converted minimum cannot be computed (e.g. missing price), validation may be skipped for that token.
If the amount is below the minimum, the API returns an error (e.g. Amount is below the minimum for this network).
2. Support and commission fee floor
When support percent or commission percent is greater than 0, the API computes the fee amount as a percentage of the original amount. To avoid dust (very small outputs that are uneconomic or invalid on-chain), the API floors each of these fee amounts to the network minimum for the payer’s chain.
- supportMinimumApplied: When the support fee was floored to the network minimum, the quote sets
supportMinimumApplied: true. The actual support amount may be higher than the strict percentage of the original amount. - commissionMinimumApplied: When the commission fee was floored to the network minimum, the quote sets
commissionMinimumApplied: true. The actual commission amount may be higher than the strict percentage.
This ensures that if you charge a small percentage (e.g. 0.1%), the fee does not become a fraction of a cent below the chain’s minimum; instead it is raised to the minimum so the output is valid.
Summary
| Use case | Behavior |
|---|---|
| Payment amount too low | Request rejected (validation error). |
| Support fee > 0, computed amount < minimum | Support amount = minimum; supportMinimumApplied: true. |
| Commission fee > 0, computed amount < minimum | Commission amount = minimum; commissionMinimumApplied: true. |
See also
- Fees — How support and commission are computed and included in the quote.
- Withdrawal minimums — Auto-withdrawal threshold (separate from payment minimums).