
When you buy a burger with USDC, how do you prove what you paid for? The blockchain shows money moved, but it doesn't show you bought a burger, paid order #4123, or sent it to the right merchant.
That's the problem X9.150 solves, a new QR Code standard being developed by the Accredited Standards Committee (X9), the US standards development organization for the financial services industry.
The new X9.150 standard creates a cryptographic link between on-chain transactions and real-world commerce. It combines signed digital messages with blockchain transaction hashes to create complete, non-repudiable proof of what was agreed, what was paid, and who confirmed it.
The Proof Gap
The blockchain is perfect at proving one thing: value moved from wallet A to wallet B. But it doesn't record why. It doesn't know about burgers, fries, or order numbers.
So even if you can show a transaction hash, a dishonest merchant could claim:
- "That wasn't my address."
- "That payment wasn't for your order."
- "You sent the money to the wrong place."
In traditional payments, this ambiguity doesn't exist. When you pay with cash or card, the act of paying and delivering the product happen together—a direct physical exchange with a corresponding receipt.
In blockchain payments, those two parts - the financial transaction and the commercial context - are separate. X9.150 provides the protocol to cryptographically tie them together.
How X9.150 Works: The Bridge Between Money and Meaning
The standard defines a lightweight protocol that works with today's systems. No need to tokenize the burger or run the restaurant on-chain.
The approach is simple: combine signed digital messages (off-chain intent) with the on-chain transaction hash (financial proof). This creates DvP-by-Attestation - atomic proof that both sides agreed and executed the deal.
The Real-World Flow (Burger & Fries Example)
Let's walk through the complete X9.150 process step by step.
1. Merchant Issues a Signed Payment Request
The merchant (POS system or cashier app) creates and signs a payment request (sig_M1) that includes:
- Payment request ID and merchant details
- Order information (number, description, amount)
- Payment methods accepted (USDC on Polygon or Solana)
- Merchant's blockchain wallet addresses
The merchant's signature (sig_M1) prevents denial later so they can't claim, "That wasn't my address." (see example JSON below)
2. Buyer Sends Pre-Commit Payment Notification
Before sending funds on-chain, the buyer signals intent by sending a pre-commit notification:
"I will pay order #4123, $20 USDC, from my address 0xBuyer to your address 7xK2s...gTf on Solana"
This pre-commit message includes:
- Payment Request ID
- Payment amount
- From address (buyer's wallet)
- To address (merchant's wallet)
- Chain ID and token
- Buyer signature (sig_B1)
Why this matters:
- The merchant verifies payment details match expectations
- Prevents duplicate payments (two people paying simultaneously)
- Blocks payments from sanctioned addresses
- Creates a timestamped record of buyer intent
The merchant either accepts or rejects this notification. On acceptance, the buyer proceeds to execute the blockchain transaction.
3. Buyer Executes On-Chain Payment
The buyer sends the USDC payment on the blockchain. The transaction completes and the blockchain produces an immutable transaction hash - for example: 0xabc...123.
This is the cryptographic proof that payment occurred.
4. Buyer Sends Post-Commit Payment Notification
Immediately after the blockchain transaction, the buyer sends a post-commit notification containing:
- All the same information from the pre-commit message
- Plus the blockchain transaction hash (0xabc...123)
- A new buyer signature (sig_B2) linking the TX hash to the earlier pre-commit
This enables the merchant to reconcile the blockchain transaction with the specific order.
Why the Two-Phase Notification Protocol Matters
Pre-Commit = Intent Proof
- Buyer declares intent before sending funds
- Merchant confirms payer's address and payment details
- Prevents double-spending, misdirected transfers, and parallel payments
Post-Commit = Settlement Proof
- Blockchain TX hash proves payment occurred
- Signed messages link that TX to the specific order
- Combined, they create an irrefutable audit trail
The end-to-end flow (payment request + pre-commit notification + blockchain transaction + post-commit notification) provides immutable proof that:
- The merchant requested payment for a specific order
- The buyer agreed to pay that specific amount to that specific address
- The blockchain transaction occurred
- That transaction was for that order
No ambiguity. No disputes. Just cryptographic proof.
Why X9.150 Matters Now
Most retailers and restaurants aren't on the blockchain. They use point-of-sale systems, invoices, and databases - all off-chain by nature. But payments are increasingly moving on-chain with stablecoins like USDC.
X9.150 fills the hybrid gap between these worlds:
- Off-chain orders and invoices stay where they are
- On-chain payments gain context and meaning
- Both parties get cryptographic protection against disputes
It's practical, standards-based, and ready to implement today.
The Bottom Line
Blockchain guarantees that money moves. X9.150 adds proof of who, what, and why.
By standardizing how signed message exchanges combine with on-chain execution, X9.150 makes blockchain payments as clear, undeniable, and honest as paying in person.
That's how we make real-world payments verifiable—one burger at a time. 🍔🍟
…Stay tuned for Part II that explains how agentic payments can take advantage of this.
Example signed payment request JSON
{
"id": "6cb69d37f3154e98a806a38bc89906a2",
"revision": 1,
[... removed signature (sig_M1) and other details for simplification ...]
"paymentNotification": "https://payments.com/notify",
"creditor": {
"name": "Carlos & Steven Burgers, Inc",
"phone": "+15552223333",
"email": "billing@bestburgerintown.com",
"address": {
"line1": "111 University Ave",
"city": "Palo Alto",
"state": "CA",
"postalCode": "93123",
"country": "US"
},
"MCC": "5814"
},
"additionalInformation": {
"key": "Hamburger and Fries",
"value": "20.00"
},
"bill": {
"description": "Combo #1",
"order": {
"number": "4123",
"date": "2025-06-27T03:00:00.000Z"
},
"amountDue": {
"amount": 20000000,
"currency": "USDC"
}
},
"paymentMethods": [
{
"currency": "USDC",
"validUntil": "2025-12-12T23:59:59Z",
"amount": 20000000,
"networks": {
"Polygon": {
"address": "0x84FEF262D139762B7984531FcBC24bfcEED1Ac32"
},
"Solana": {
"address": "7xK2s3fAGJ5jG5aG9Q8p6H3r4Y2Z1WjK9nLcXdE5gTf"
}
}
}
]
}