The x402 Concordium Facilitator (XCF) implements a rail-agnostic x402 facilitator (UFX) plus a Concordium Rail Plugin (CRP) that verifies finalized PLT transfers (no token contracts), enforces exact-amount matching, and issues JWS-signed receipts with JWKS rotation.
xcf-concordium-facilitator is an early-stage TypeScript project in the AI payments / x402 ecosystem. It currently has 0 GitHub stars and 0 forks.
XCF consists of two layers:
PoC scope: No custody; no on-chain contracts. Finality-only, exact amount matching, signed receipts, and minimal merchant integration (webhook + polling).
A payer scans a QR (or taps NFC), sends the exact PLT amount to the pay_to address, and the terminal shows a green check as soon as XCF issues a signed receipt.
{ tokenId, to, amountMinor }, where amountMinor = toMinorUnits(amount, decimals); no slippage.nonce + identical payload ⇒ same outcome; same nonce + different payload ⇒ 422.kid; JWKS published at /.well-known/jwks.json.GET /healthzGET /v1/crp/healthsrc/crp/grpc.tsGET /v1/crp/consensusGET /v1/crp/account/:addressnpm run smoke:crpnpm run smoke:plt (initial stub)db/migrations/002_m3_stream.sqlsrc/crp/decimals-registry.tssrc/crp/parser.tssrc/crp/stream.tssrc/crp/stream-worker.tssrc/store/plt.pg.ts – PLT eventssrc/store/match.pg.ts – matched paymentsGET /v1/crp/payments/searchmerchantId, status, limit (and default unfiltered listing)scripts/migrate-002-m3-stream.js – apply M3 migrationscripts/debug-*.js – consensus, PLT events, seeding demo challengesscripts/smoke-idempotency.sh – create/idempotent/409 conflict flow for JWS receiptsStatus: M3 is implemented and merged into main.
M4 adds two helper routes under /v1/crp for working with PLT-based payment challenges:
GET /v1/crp/payments/search
Search challenges/payments by tuple filters (existing route).
POST /v1/crp/payments/match
Pure read-only exact tuple match. Validates the full tuple:merchantId, nonce, network, asset{type, tokenId, decimals}, amount, payTo.
Returns either reason: "exact_match" with a single row, or reason: "no_match".
POST /v1/crp/payments/fulfill
Uses the same exact-tuple match as /payments/match, but is intended as the
gateway “fulfill” entrypoint. On success it can also POST a JSON payload
to a merchant-specific webhook.
Production-ready x402 facilitator server.
Rust SDK for the x402 payment protocol.
Accept payments from AI agents. Open-source. Your data, your domain, your rules. Free forever.
A production-ready payment settlement service for the x402 protocol. Built with Elysia and Node.js, it verifies cryptographic payment signatures and settles transactions on-chain for EVM, SVM (Solana), and Starknet networks.
Golang implementation of an x402 payment facilitator
x402 payment facilitator — verifies and settles EIP-3009 USDC micropayments on Base, Arbitrum, and Ethereum.