Skip to main content

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).

VariableChainDefaultDescription
PAYMENTS_MIN_AMOUNT_SOLANA_LAMPORTSSolana890880Minimum transfer in lamports.
PAYMENTS_MIN_AMOUNT_EVM_WEIEVM (Ethereum, Polygon, Base, etc.)(none)Optional. When set, minimum in wei.
PAYMENTS_MIN_AMOUNT_BITCOIN_SATSBitcoin546Minimum 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 caseBehavior
Payment amount too lowRequest rejected (validation error).
Support fee > 0, computed amount < minimumSupport amount = minimum; supportMinimumApplied: true.
Commission fee > 0, computed amount < minimumCommission 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).