Understanding ONDC: The SMTP Moment for Commerce
Disclaimer: The content of this blog represents the personal opinions of the author and is provided for informational purposes only. The author makes no representations as to the accuracy or completeness of any information on this site. The author will not be liable for any errors, omissions, or delays in this information or any losses, injuries, or damages from its display or use.
Most explanations of ONDC stop at “it’s UPI for shopping.” While that’s a useful shorthand, as engineers, we need a better mental model.
The best analogy isn’t UPI. It’s email.
The SMTP Analogy
Remember the early 90s? (Or at least the history of it?)
If you were on AOL, you could only email other AOL users. If you were on CompuServe, you were in a different silo. These were “walled gardens”—proprietary networks that controlled the user experience end-to-end.
Then came SMTP (Simple Mail Transfer Protocol).
SMTP decoupled the client from the provider. Suddenly, a Gmail user could email a Yahoo user. You didn’t need to be on the same platform to communicate.
ONDC is doing exactly this for commerce.
| Before ONDC (Walled Garden) | After ONDC (Open Network) |
|---|---|
| Amazon sellers only reach Amazon buyers | Any seller reaches any buyer app |
| Platform controls discovery, logistics, and data | You unbundle and choose your providers |
| ”Tenant” relationship | ”Owner” relationship |
Technical Deep Dive: Unbundling the Stack
The last decade of e-commerce was defined by vertical integration. Amazon and Flipkart built efficient machines by controlling every layer:
- Discovery (The App)
- Inventory (Warehousing)
- Fulfillment (Logistics)
- Customer Identity (Data)
ONDC flips this model by unbundling these layers via the Beckn Protocol.
ONDC isn’t a platform; it’s a set of open specifications. In this architecture, participants specialize:
- Buyer Apps (BAPs): Focus solely on acquiring customers and capturing intent (discovery). Examples: Paytm, Mystore, Magicpin.
- Seller Apps (BPPs): Focus on digitizing catalogs and inventory management. This is your “mail server” in the SMTP analogy.
- Gateway: Simply broadcasts search intents; it acts like a DNS lookup for commerce.
How It Actually Works: The Request Flow
When a user searches for “coffee beans” on a Buyer App, they aren’t querying a central database. They are triggering a distributed broadcast across the network:
- Search (
/search): The Buyer App sends a search packet to the Gateway. - Broadcast: The Gateway looks up the registry and broadcasts the intent to all relevant Seller Apps.
- Catalog Matching: Seller Apps (BPPs) process the query against their local inventory.
- Response (
/on_search): BPPs respond asynchronously with catalog results. - Aggregation: The Buyer App aggregates these responses and renders the listing to the user.
Why This Matters for Engineering Teams
This asynchronous, decentralized model shifts the complexity from valid business logic to distributed systems challenges:
- Innovation at the Edges: Since the core is just a protocol, you can build a Buyer App specifically for hyper-local organic food, or a Seller App optimized for B2B industrial supplies. You don’t need permission from a central authority.
- New Consistency Models: We trade the simplicity of a central database for the complexity of eventual consistency. Handling stockouts (“ghost orders”) across a broadcast network requires robust real-time sync mechanisms.
- Identity & Trust: Just like email needed DKIM and SPF to fight spam, ONDC uses PKI and digital signatures to verify that a packet from a Seller App is legitimate.
The Future is Open
We are moving from a world of platforms to a world of protocols.
For developers and founders, this is the biggest opportunity since the mobile web. We aren’t just integrating with a new channel; we are building the infrastructure for the next generation of commerce.
Joining ONDC? I’m building the Adoption Accelerator Platform to help sellers, logistics providers, and apps succeed on the network. Sign up for early access when I launch.