Skip to main content
POST
/
v1
/
verify
curl -X POST https://facilitator.api.0xmeta.ai/v1/verify \
  -H "Content-Type: application/json" \
  -H "X-API-Key: your_api_key" \
  -H "Idempotency-Key: verify_$(date +%s)" \
  -d '{
    "transaction_hash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
    "chain": "base",
    "seller_address": "0x742d35cc6634c0532925a3b844bc9e7595f0beb0",
    "expected_amount": "1000000000000000000",
    "expected_token": null,
    "metadata": {
      "order_id": "ORDER-123"
    },
    "webhook_url": "https://your-app.com/webhooks"
  }'
{
  "verification_id": "ver_abc123def456",
  "status": "verified",
  "transaction_hash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
  "chain": "base",
  "verified_amount": "1000000000000000000",
  "verified_token": null,
  "verified_at": "2025-01-15T10:30:00Z",
  "details": {
    "confirmations": 12,
    "block_number": 18500000,
    "gas_used": "21000"
  }
}

Endpoint

Verify that a blockchain payment transaction meets the expected criteria.
transaction_hash
string
required
The blockchain transaction hash (must start with 0x, 66 characters) Example: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
chain
string
required
Blockchain network: base (Base Mainnet) or base-sepolia (Base Sepolia Testnet)
seller_address
string
required
The seller’s blockchain address (42 characters, must start with 0x) Example: 0x742d35cc6634c0532925a3b844bc9e7595f0beb0
expected_amount
string
required
Expected payment amount in wei (as string to avoid precision loss) Example: "1000000000000000000" (1 ETH in wei)
expected_token
string
Expected token contract address for ERC20 payments. Use null for native token (ETH, MATIC, etc.) Example: 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 (USDC)
metadata
object
Additional metadata for the transaction
{
  "order_id": "ORDER-123",
  "customer_id": "CUST-456"
}
webhook_url
string
URL to receive settlement status updates. Must be HTTPS in production. Example: https://your-app.com/webhooks/settlement

Headers

X-API-Key
string
required
Your API key for authentication
Idempotency-Key
string
Unique key to prevent duplicate verifications. Valid for 24 hours. Example: verify_ORDER-123_1234567890
curl -X POST https://facilitator.api.0xmeta.ai/v1/verify \
  -H "Content-Type: application/json" \
  -H "X-API-Key: your_api_key" \
  -H "Idempotency-Key: verify_$(date +%s)" \
  -d '{
    "transaction_hash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
    "chain": "base",
    "seller_address": "0x742d35cc6634c0532925a3b844bc9e7595f0beb0",
    "expected_amount": "1000000000000000000",
    "expected_token": null,
    "metadata": {
      "order_id": "ORDER-123"
    },
    "webhook_url": "https://your-app.com/webhooks"
  }'
{
  "verification_id": "ver_abc123def456",
  "status": "verified",
  "transaction_hash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
  "chain": "base",
  "verified_amount": "1000000000000000000",
  "verified_token": null,
  "verified_at": "2025-01-15T10:30:00Z",
  "details": {
    "confirmations": 12,
    "block_number": 18500000,
    "gas_used": "21000"
  }
}

Response Fields

verification_id
string
required
Unique identifier for this verification. Use this for settlement.
status
string
required
Verification status: verified, pending, failed, or rejected
transaction_hash
string
required
The verified transaction hash
chain
string
required
The blockchain network
verified_amount
string
Actual verified amount in wei (null if pending)
verified_token
string
Verified token contract address (null for native token)
verified_at
string
ISO 8601 timestamp when verification completed
details
object
Additional verification details (confirmations, block number, etc.)

Common Use Cases

{
  "transaction_hash": "0x...",
  "chain": "base",
  "seller_address": "0x...",
  "expected_amount": "1000000000000000000",
  "expected_token": null
}
{
  "transaction_hash": "0x...",
  "chain": "base",
  "seller_address": "0x...",
  "expected_amount": "1000000",
  "expected_token": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
}
{
  "transaction_hash": "0x...",
  "chain": "base-sepolia",
  "seller_address": "0x...",
  "expected_amount": "1000000000000000000",
  "webhook_url": "https://your-app.com/webhooks/settlement"
}
Verifications are processed in less than 2 seconds. Background workers handle transaction logging asynchronously.
Always use Idempotency-Key header to prevent duplicate verifications if your request might be retried.
Save the verification_id - you’ll need it for settlement!