Dexter
Dexter
Docs

Sponsor Policy

The facilitator doesn't blindly sign whatever transactions come in. Every payment is validated against a strict policy before the facilitator sponsors fees and submits it on-chain.

Solana Policy

Allowed Programs

Only these programs may appear in a sponsored transaction:

ProgramAddress
ComputeBudgetComputeBudget111111111111111111111111111111
SPL TokenTokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
Token-2022TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
Phantom LighthouseL2TExMFKdjpN9kozasaurPirfHy9P8sbXoAN1qA3S95
Memo V2MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr
Memo V1Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo

System Program, Associated Token Program, and all other programs are rejected. This prevents the facilitator from being tricked into signing arbitrary transactions.

Compute and Fee Caps

LimitDefault Value
Max compute units200,000 CU
Max priority fee50,000 microlamports
Max transfers per transaction1
Max memo size566 bytes

Smart wallet transactions get a higher compute budget (400,000 CU).

Asset Allowlist

Only USDC is accepted by default:

TokenMint Address
USDC (Mainnet)EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v

Configurable via ALLOWED_ASSETS environment variable (comma-separated mint addresses).

Minimum Payment

LimitValue
Minimum payment (atomic units)10,000 (= 0.01 USDC)

Payments below this amount are rejected.

Other Restrictions

  • Address lookup tables are not supported (policy:address_lookup_table_not_supported)
  • Recipient must match the payTo address in payment requirements
  • Mint must match the asset in payment requirements
  • Amount must be >= the required amount

EVM Policy

EVM payments use EIP-3009 transferWithAuthorization. The facilitator validates:

CheckRuleError if violated
Recipientauthorization.to must match requirements.payTo (case-insensitive)invalid_exact_evm_payload_recipient_mismatch
TokenUses the ERC-20 contract from requirements.assetImplicit
Amountauthorization.value must be at least requirements.amountinvalid_exact_evm_payload_authorization_value
BalanceSender must hold sufficient tokensinsufficient_funds
TimingvalidBefore must be at least now + 6 secondsinvalid_exact_evm_payload_authorization_valid_before
TimingvalidAfter must be at or before nowinvalid_exact_evm_payload_authorization_valid_after

Debugging Policy Rejections

If a payment is rejected, the facilitator returns an errorCode in the response. Common codes:

  • policy:program_not_allowed — transaction contains an instruction for a disallowed program
  • policy:compute_units_exceeded — requested more than 200,000 CU
  • policy:priority_fee_exceeded — priority fee above 50,000 microlamports
  • policy:asset_not_allowed — token mint not in the allowlist
  • policy:amount_below_min — payment below 0.01 USDC

See Facilitator Error Codes for the full list.

On this page