On-Chain Settlement
Release or refund funds directly on-chain using a FinalTX-signed settlement verdict. Supports EVM chains and Solana. FinalTX charges a 1% platform fee on successful releases.
Environment Variables Required
Set these in your Vercel project settings to enable on-chain settlement:
See Configuration section for complete list
On-chain settlement enables contracts to release funds directly on-chain without going through Stripe. Once verification completes, FinalTX issues a cryptographically signed Settlement Verdict. Either party submits this verdict to the deployed vault contract, which verifies the attestor signature and executes the transfer. FinalTX charges a 1% platform fee (100 bps) on successful releases. No fee is charged on refunds. The fee is deducted from the locked amount before releasing to the seller.
The following chains are supported for on-chain settlement. Chain support is determined at contract creation time and cannot be changed after funding.
| Chain | Family | Chain ID | Tokens | Status |
|---|---|---|---|---|
| Ethereum | evm | 1 | ETH / ERC-20 | Mainnet |
| Base | evm | 8453 | ETH / ERC-20 | Mainnet |
| Arbitrum | evm | 42161 | ETH / ERC-20 | Mainnet |
| Optimism | evm | 10 | ETH / ERC-20 | Mainnet |
| Polygon | evm | 137 | MATIC / ERC-20 | Mainnet |
| Avalanche | evm | 43114 | AVAX / ERC-20 | Mainnet |
| Solana | solana | mainnet-beta | SOL / SPL | Mainnet |
After verification completes, call GET /v1/contracts/:id/onchain/verdict (or POST to force re-issue) to receive a SignedSettlementVerdict. This object contains everything needed to call the vault contract. The verdict is valid for 7 days from issuance. If it expires before submission, request a new one. Each verdict has a unique nonce consumed on-chain to prevent replay attacks.
{
"payload": {
"verdict_id": "ftx_vrd_01JXXXXX",
"version": "1.0",
"contract_id": "con_abc123",
"decision": "release", // "release" | "refund"
"release_amount_wei": "990000000000000000", // 0.99 ETH (after 1% fee)
"refund_amount_wei": "0",
"platform_fee_amount_wei": "10000000000000000", // 0.01 ETH (1%)
"nonce": "0xabcdef...",
"issued_at": "2026-03-07T12:00:00Z",
"expires_at": "2026-03-14T12:00:00Z"
},
"verdict_hash_sha256": "0xdeadbeef...",
"chain_family": "evm",
"chain_id": "8453",
"verifying_contract": "0xVaultAddress...",
"evm_typed_data": {
"domain": {
"name": "FinalTX",
"version": "1",
"chainId": 8453,
"verifyingContract": "0xVaultAddress..."
},
"types": { "SettlementVerdict": [ /* ... */ ] },
"primaryType": "SettlementVerdict",
"message": { /* ... */ }
},
"evm_typed_data_digest": "0x...",
"signature": "0x...", // 65-byte compact hex
"signer_address": "0xFinalTXAttestor..."
}FinalTX deducts 1% from every successful release. The fee is calculated server-side when issuing the verdict and is baked into the signed payload — the vault contract verifies that release_amount_wei + platform_fee_amount_wei equals the deposited amount. No fee is charged on refunds. The full locked amount is returned to the payer.
// Fee breakdown for a 1 ETH release:
{
"gross_amount_wei": "1000000000000000000", // 1.000 ETH (locked on-chain)
"platform_fee_wei": "10000000000000000", // 0.010 ETH (1%)
"net_release_wei": "990000000000000000", // 0.990 ETH (to seller)
"platform_fee_bps": 100,
"platform_fee_human": "0.01 ETH",
"gross_amount_human": "1 ETH",
"net_release_human": "0.99 ETH"
}
// On REFUND: no fee is charged.
// Full locked_amount_wei is returned to the payer.Configure environment variables in Vercel project settings. These are required to sign settlement verdicts and execute on-chain transactions. ATTESTOR KEYS (required for verdict signing): - FINALTX_ATTESTOR_KEY_EVM: Private key for signing EIP-712 verdicts - FINALTX_ATTESTOR_ADDRESS_EVM: Corresponding EVM address - FINALTX_ATTESTOR_KEY_SOLANA: Private key for Ed25519 signing - FINALTX_ATTESTOR_ADDRESS_SOLANA: Corresponding Solana public key VAULT CONTRACT ADDRESSES (get from contract deployment): - VAULT_ADDRESS_ETH_1: Ethereum Mainnet - VAULT_ADDRESS_BASE_8453: Base Mainnet - VAULT_ADDRESS_ARB_42161: Arbitrum One - VAULT_ADDRESS_OP_10: Optimism - VAULT_ADDRESS_POLY_137: Polygon - VAULT_ADDRESS_AVAX_43114: Avalanche - VAULT_PROGRAM_SOLANA_MAINNET: Solana mainnet-beta program ID - VAULT_PROGRAM_SOLANA_DEVNET: Solana devnet program ID OPTIONAL (for tx verification): - RPC_ETH_MAINNET: Alchemy or custom RPC - RPC_SOLANA_MAINNET: Solana RPC endpoint
API Endpoints
Issue or re-fetch a signed settlement verdict
Retrieve the latest verdict without re-signing
Get on-chain settlement configuration
Update on-chain config (before funding only)
Full settlement receipt with audit bundle
Record on-chain tx hash (submitted / settled)
List all supported chains