Documentation Index Fetch the complete documentation index at: https://developers.fd.xyz/llms.txt
Use this file to discover all available pages before exploring further.
An AI agent buys one “Coldplay World Tour - Floor Standing GA” ticket ($120.00), paying in FDUSD on BSC. Each step shows what the agent sends, what the merchant does behind the scenes, and what Prism returns.
1. Discovery
The agent checks the merchant’s UCP profile. The merchant fetches the current handler definition from Prism and returns it.
Agent → Merchant
GET /.well-known/ucp
UCP-Agent : profile="https://platform.example/ucp/profile"
Merchant → Prism (background)
GET https://prism-gw.fd.xyz/api/v2/merchant/payment-profile
X-Project-Identify-Token : prism_live_...
Agent receives:
{
"ucp" : {
"version" : "2026-01-23" ,
"payment_handlers" : {
"xyz.fd.prism_payment" : [
{ "id" : "prism_default" , "version" : "2026-01-23" }
]
}
}
}
The agent confirms xyz.fd.prism_payment is present and proceeds to checkout.
2. Checkout Session
The agent sends their cart. The merchant calls Prism to get x402 payment requirements and returns them in the session.
Agent → Merchant
POST /checkout-sessions
Content-Type : application/json
UCP-Agent : profile="https://platform.example/ucp/profile"
{
"line_items" : [
{ "item" : { "id" : "ticket_floor_ga" }, "quantity" : 1 }
]
}
Merchant → Prism (background)
POST https://prism-gw.fd.xyz/api/v2/merchant/checkout-prepare
X-Project-Identify-Token : prism_live_...
Content-Type : application/json
{
"amount" : "12000" ,
"currency" : "USD" ,
"resource" : {
"url" : "https://merchant.example/checkout-sessions/sess_abc123" ,
"description" : "Coldplay World Tour - Floor Standing GA"
}
}
Agent receives:
{
"session_id" : "sess_abc123" ,
"payment_handlers" : {
"xyz.fd.prism_payment" : [
{
"id" : "prism_default" ,
"version" : "2026-01-23" ,
"config" : {
"x402Version" : 2 ,
"resource" : {
"url" : "https://merchant.example/checkout-sessions/sess_abc123" ,
"description" : "Coldplay World Tour - Floor Standing GA"
},
"accepts" : [
{
"scheme" : "exact" ,
"network" : "eip155:56" ,
"amount" : "120000000000000000000" ,
"asset" : "0xaB27f55DB008704Ed8098f0dfBCf5e1aA387b9d9" ,
"payTo" : "0x40a01003f7543a3a3ee64fFB05504173BDb1C4fD" ,
"maxTimeoutSeconds" : 300 ,
"extra" : { "name" : "First Digital USD" , "version" : "1" }
},
{
"scheme" : "exact" ,
"network" : "eip155:8453" ,
"amount" : "120000000" ,
"asset" : "0x036cbd53842c5426634e7929541ec2318f3dcf7e" ,
"payTo" : "0x40a01003f7543a3a3ee64fFB05504173BDb1C4fD" ,
"maxTimeoutSeconds" : 300 ,
"extra" : { "name" : "USDC" , "version" : "2" }
}
]
}
}
]
}
}
The agent extracts config and passes it to the wallet.
3. Payment Authorization
The agent’s wallet receives the config as paymentRequirements. No HTTP request goes out at this step — everything happens locally inside the TEE.
Wallet receives: config.accepts — two options (BSC FDUSD, Base USDC)
Wallet selects: eip155:56 (BSC), FDUSD — sufficient balance available
Wallet signs: ERC-3009 transferWithAuthorization inside the secure enclave
Wallet returns: complete signed x402 payment object
The private key never leaves the enclave. Only the signed authorization exits.
4. Complete Checkout
The agent submits the signed wallet output verbatim as the credential.
Agent → Merchant
POST /checkout-sessions/sess_abc123/complete
Content-Type : application/json
UCP-Agent : profile="https://platform.example/ucp/profile"
{
"payment" : {
"instruments" : [
{
"id" : "wallet_bsc_fdusd" ,
"handler_id" : "prism_default" ,
"type" : "default" ,
"credential" : {
"type" : "default" ,
"paymentPayload" : {
"signature" : "0x..." ,
"authorization" : {
"from" : "0xAgentWalletAddress" ,
"to" : "0x40a01003f7543a3a3ee64fFB05504173BDb1C4fD" ,
"value" : "120000000000000000000" ,
"validAfter" : "0" ,
"validBefore" : "1760000000" ,
"nonce" : "0x..."
}
},
"paymentRequirements" : { "..." : "config from step 2" }
}
}
]
}
}
Merchant → Prism (background)
POST https://prism-gw.fd.xyz/api/v2/payment/settle
X-Project-Identify-Token : prism_live_...
Content-Type : application/json
{ ...credential object verbatim... }
Prism executes the ERC-3009 transferWithAuthorization on BSC, verifies the transfer, and returns:
{
"success" : true ,
"transaction" : "0xe80c...674b" ,
"network" : "eip155:56"
}
Agent receives:
{
"order" : {
"id" : "ord_abc123" ,
"status" : "confirmed" ,
"payment" : {
"handler_id" : "prism_default" ,
"status" : "settled" ,
"transaction" : "0xe80c...674b" ,
"network" : "eip155:56"
}
}
}
The ticket is reserved. 120 FDUSD has settled on-chain to the merchant’s wallet.
Testing
Use the production Prism gateway (https://prism-gw.fd.xyz) with your own account and small amounts to validate the full flow end-to-end against real on-chain settlement.
Merchant Guide Step-by-step implementation for the merchant server
Agent Guide Step-by-step implementation for the agent platform