Overview
Ababil is a payment infrastructure layer built on the x402 protocol. It sits between merchants and buyers, providing the API, dashboard, and on-chain relay needed to accept USDC payments — without ever holding funds. The system is designed around three principles:- Non-custodial — USDC moves peer-to-peer, directly from buyer wallet to merchant dashboard wallet. Ababil relays the transaction but never holds or routes funds through its own accounts.
- Chain-agnostic — a single payment intent covers all chains the merchant has registered wallets on. The buyer picks the chain at payment time.
- Agent-ready — EIP-3009 authorizations require nothing beyond a private key, making fully autonomous AI agent payments possible with no browser or approval flow.
The x402 Protocol Triangle
Every payment involves three roles:| Role | Responsibility |
|---|---|
| Merchant | Creates payment intents via API. Registers wallets on supported chains from the dashboard. Receives USDC directly into their dashboard wallet on settlement. |
| Buyer | Signs a TransferWithAuthorization EIP-3009 message (EVM) or SPL transaction (Solana). No token approvals required. |
| Ababil | Validates the signature, checks buyer balance, and submits transferWithAuthorization on-chain via relay EOA. Marks the intent paid on confirmation. |
Payment Flow
EIP-3009 — How the Authorization Works
EIP-3009 (transferWithAuthorization) is a standard on Circle USDC contracts that allows a signed message to authorize a USDC transfer, without requiring a separate on-chain approve transaction first.
The buyer signs an EIP-712 typed data message containing:
| Field | Description |
|---|---|
from | Buyer wallet address |
to | Merchant wallet address (payTo from payment_requirements) |
value | Transfer amount in atomic USDC units |
validAfter | Earliest timestamp the authorization is valid (typically 0) |
validBefore | Expiry timestamp (typically now + 900s) |
nonce | Random bytes32 — used once, permanently recorded by the USDC contract |
Supported Chains (Testnet v1)
| Network | Chain ID | Role |
|---|---|---|
| Base Sepolia | 84532 | EVM — EIP-3009 |
| Ethereum Sepolia | 11155111 | EVM — EIP-3009 |
| Arc Testnet | 5042002 | EVM — EIP-3009 |
| Solana Devnet | N/A | SPL token transfer |
TransferWithAuthorization signing flow. Solana uses a two-step flow: Ababil builds the unsigned SPL transfer transaction, the buyer signs it with their Solana wallet, and the signed transaction is submitted via /pay.
Merchant Dashboard Wallet
Each merchant registers one or more wallets from the Ababilpay Dashboard. These are the destination addresses for all USDC settlements.- Wallets are registered per chain — a merchant can have a Base Sepolia wallet and a Solana Devnet wallet simultaneously.
- When a payment intent is created,
payment_requirementsis automatically populated with an entry for every chain the merchant has a registered wallet on. - USDC is transferred directly to the registered wallet address on settlement — it never passes through Ababil.
API Authentication Model
All API calls are authenticated with a merchant-scoped Bearer key:payment_requirements. Keys are created and revoked from the Dashboard → API Keys.
Integration Paths
Ababil supports two integration patterns that share the same intent creation endpoint:| Hosted Gateway | Custom Integration | |
|---|---|---|
| Use case | Human buyers, e-commerce | AI agents, white-label UIs |
| Buyer UX | Ababil-hosted checkout page | Your own frontend |
| Signing | Handled by Ababil checkout | Handled by your code |
| Settlement call | Automatic (inside checkout) | POST /api/v1/x402/pay |
| AI agent support | ✗ | ✓ |