Skip to content

Conversation

@0xmetaHQ
Copy link

@0xmetaHQ 0xmetaHQ commented Jan 2, 2026

Description

This PR adds 0xmeta.ai, a production-ready x402 payment facilitator implementation in Python (FastAPI). 0xmeta.ai enables merchants to accept crypto payments (USDC) on Base with EIP-3009 settlements.

Tests

End-to-End Payment:

  • User connects wallet to merchant api
  • User signs EIP-3009 authorization
  • Payment verified and settled via 0xmeta
  • $0.01 fee collected from merchant
  • User granted access to protected content

Checklist

  • I have formatted and linted my code
  • All new and existing tests pass
  • My commits are signed (required for merge) -- you may need to rebase if you initially pushed unsigned commits

Additional Quality Checks

  • Code follows x402 specification (v1)
  • EIP-3009 signature verification implemented correctly
  • Proper error handling and logging throughout
  • Environment variables documented in .env.example
  • README.md includes setup and usage instructions
  • API endpoints documented with examples
  • Security best practices followed (no hardcoded secrets)

@cb-heimdall
Copy link

cb-heimdall commented Jan 2, 2026

🟡 Heimdall Review Status

Requirement Status More Info
Reviews 🟡 0/1
Denominator calculation
Show calculation
1 if user is bot 0
1 if user is external 0
2 if repo is sensitive 0
From .codeflow.yml 1
Additional review requirements
Show calculation
Max 0
0
From CODEOWNERS 0
Global minimum 0
Max 1
1
1 if commit is unverified 0
Sum 1

@vercel
Copy link

vercel bot commented Jan 2, 2026

@0xmetaHQ is attempting to deploy a commit to the Coinbase Team on Vercel.

A member of the Team first needs to authorize it.

@Must-be-Ash
Copy link
Contributor

Hi there! The submission shows "baseUrl": "https://0xmeta.ai" but the docs show 'Base URL: https://facilitator.0xmeta.ai/v1' and I believe that's the correct baseUrl if I'm not mistaking. I tested https://facilitator.0xmeta.ai/v1 and noticed that your API endpoints (/verify and /settle) use a different request/response format than the standard x402 specification. Is there an adaptor or something I'm missing? I might be wrong on this so I'm looping in @phdargen to take a closer look

/verify:

  • Request: 0xMeta uses seller_address but standard expects payTo in paymentRequirements
  • Request: 0xMeta requires transaction_hash, chain, expected_amount, expected_token but standard expects only paymentPayload and paymentRequirements
  • Response: 0xMeta returns status: "verified" but standard expects isValid: true

/settle:

  • Request: 0xMeta uses verification_id and destination_address but standard expects paymentPayload and paymentRequirements
  • Request: 0xMeta uses destination_address but standard expects payTo in paymentRequirements
  • Response: 0xMeta returns status: "pending" but standard expects success: true
  • Response: 0xMeta returns settlement_tx_hash but standard expects transaction

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

5 participants