Beckn Protocol
Introduction
The Beckn Protocol specification defines a standard protocol stack that allows independently run applications to take part in trusted value exchange transactions. These transactions usually move through discovery, contracting, fulfillment, and post-fulfillment.
This document explains Fabric v2 at a high level. It is an overview. It is meant to help a human or an AI agent understand how the parts fit together before going into the full API files and schema files.
This protocol stack consists of the following layers (bottom to top)
Network Architecture
API Specification
Composable linked-data schema
Communication Protocol
Workflows
Let us understand each of these layers briefly.
Refer to the protocol here - https://github.com/beckn/protocol-specifications-v2
Network Architecture
A Fabric network is a set of separate services. Each service is run independently. The protocol gives them a common way to talk to each other.
In beckn protocol v2 (Hereafter referred to as v2) the main actor roles are the following:
consumer node (consumer node) - the buyer side or user side platform
provider node (provider node) - the seller side or provider side platform
CS (Catalog Service) - the service that receives catalog publications from provider nodes
DS (Discovery Service) - the service that answers discovery queries from consumer nodes
Registry - the trust directory that stores participant identity, endpoints, and public keys
A consumer node discovers supply through a DS. A provider node publishes its catalog to a CS. After discovery, the consumer node usually talks directly to the provider node for the transaction. All actors use the Registry to find endpoints and public keys and to verify signatures.
In v2 the Registry is a DeDi-compliant directory. This means the trust layer is treated as a proper public directory and not as a custom side system.
The important point is this: v2 does not depend on a live multicast gateway for discovery. Discovery is catalog-first and index-based.
API Specification
The API specification defines the common shape of Fabric messages and endpoints.
In v2, the endpoint pattern is simple:
/beckn/{becknEndpoint}
For example, a participant may expose endpoints such as:
/beckn/discover/beckn/on_discover/beckn/select/beckn/on_select/beckn/confirm/beckn/on_confirm
The exact actions a participant supports depend on its role.
Every beckn API call carries a transport envelope and a business payload.
The transport envelope is the fixed part of the protocol. It carries things like the action name, IDs, time, and routing data. The business payload is the domain data inside the message.
Beckn protocol specifies context, message, inReplyTo, status, and signatures in the transport contract. They are fixed. They must not be renamed or redefined by domain schema.
At a high level, the main action groups are:
Discovery -
discover,on_discoverContracting -
select,on_select,init,on_init,confirm,on_confirmFulfillment -
status,on_status,update,on_update,track,on_track,cancel,on_cancelPost-fulfillment -
rate,on_rate,support,on_supportInfrastructure -
publishand Registry lookups
Composable linked-data schema
In Beckn v2, the business payload is not just plain JSON. It is JSON-LD.
JSON-LD lets every type and field carry a shared meaning. It does this mainly through two ideas:
@context- tells the reader where the meaning of terms comes from@type- tells the reader what kind of object it is
This is important because Fabric is meant to work across domains, geographies, and networks. A machine should not only read the data. It should also understand what the data means.
Beckn v2 separates schema into three layers:
The transport envelope layer - the API envelope and container schemas
The core schema layer - shared business types such as
Catalog,Item,Offer,Intent,Contract,Provider,FulfillmentThe domain schema pack layer - domain specific extensions such as retail, mobility, health, logistics, and others
Where possible, Beckn protocol maps types and fields to schema.org. When the protocol needs its own meaning, it uses the Fabric/protocol namespace. This gives global interoperability without losing Fabric-specific meaning.
This layered design solves an important problem. The transport API can stay small and stable. At the same time, the business schema can grow over time. New domains can be added without changing the basic transport contract.
The schema.beckn.io website is the public place where these schema resources can be published and browsed. It gives stable IRIs, JSON-LD contexts, RDF vocabularies, and versioned schema pages. In simple words, it is the public map of meaning for Fabric data.
Communication Protocol
The communication protocol defines how Fabric messages move over the network.
At the transport level, v2 uses HTTPS and digital signatures.
There are three main request modes:
POST - used for normal forward requests and callbacks
GET Body Mode - used when a GET request with a JSON body is allowed
GET Query Mode - used when the whole request must fit inside a URL, such as a QR code or a deep link
Every request except GET Query Mode carries a Fabric Signature in the Authorization header. The receiver verifies that signature using the sender's public key from the Registry.
The communication pattern is usually as follows:
The sender sends a signed request
The receiver immediately returns
AckorNackIf the request is accepted, the business result usually comes later as a callback
The callback carries
inReplyToso it can be tied to the original requestThe
Ackcarries acounterSignature, which works as a signed receipt
This means it is not just request-response in the usual web sense. It is mainly an asynchronous and event-driven protocol.
At a practical level, protocol supports all of the following patterns:
Same-session acknowledgement - the receiver immediately says whether it received the message
Asynchronous business response - the actual business result comes later through a callback
Synchronous business response in some cases - for example, discovery results may also be returned synchronously depending on network policy
Later state-driven messages - a later message may be sent because the state changed, not because a user clicked a button at that moment
GET Query Mode is a special case. It is used when the request must be a self-contained URL. In that mode, the server must not send an asynchronous callback. It only returns an acknowledgement.
Workflows
Workflows are the business paths built on top of the API actions.
The protocol gives reusable actions. A network then combines those actions into a workflow.
A simple workflow often looks like this:
A provider node publishes catalog data
A consumer node discovers that catalog through a DS
The consumer node starts a transaction with a provider node
The consumer node and provider node agree on terms
The provider node fulfills the contract
The parties may exchange rating or support information later
Not every network uses every action. Not every domain needs every step. The protocol gives the building blocks. The network chooses the path.
Understanding the Fabric API Specification
This section gives the API picture at a level useful for implementation. It keeps the discussion short and clear. A separate document can go action by action in more detail.
What changed in beckn v2
If you have seen older beckn material, these are the changes that matter most:
Discovery is no longer based on live gateway multicast. provider nodes publish catalogs to the Catalog Service. consumer nodes discover through Discovery Service.
The API surface is simplified around the common endpoint pattern
/beckn/{becknEndpoint}.The transport contract and the business schema are now clearly separated.
The business payload is JSON-LD, with shared meaning through
@contextand@type.The Registry is aligned to a DeDi-compliant directory model.
Non-repudiation is stronger because acknowledgements can carry
counterSignatureand callbacks can carryinReplyTo.
What a fabric network participant must do
Any platform can take part in a Fabric network if it can do the following:
Register its identity, endpoint, and public keys in the Registry
Send signed fabric messages
Verify signed fabric messages from others
Implement the endpoints needed for its role
Read and produce the shared JSON-LD payloads
The main actors
Let us look at the main actors one by one.
consumer node
A consumer node is the buyer side platform. It is the platform where the user, buyer, or demand side experience lives.
A consumer node usually does the following:
Sends discovery requests to a DS
Receives discovery results
Sends transaction requests to provider nodes
Receives callbacks from provider nodes
Shows the results to the end user
provider node
A provider node is the provider side platform. It is the platform where the provider's catalog, pricing, contract logic, and fulfillment logic live.
A provider node usually does the following:
Publishes its catalog to a CS
Receives transaction requests from consumer nodes
Sends callbacks to consumer nodes
Updates contract and fulfillment state over time
CS (Catalog Service)
A CS is the catalog publishing service.
It receives catalog publications from provider nodes, validates them, normalizes them, and prepares them for indexing.
DS (Discovery Service)
A DS is the catalog discovery service.
It keeps an index of published catalog data and answers discovery requests from consumer nodes. This is why Fabric v2 discovery is fast and does not need live fan-out to all provider nodes.
Registry
The Registry is the trust directory of the network.
It stores participant records, endpoints, capabilities, and public keys. Before a participant sends a message, it can use the Registry to find where to send the message and how to verify the signature.
What every fabric packet contains
Every Fabric request or callback contains two main parts:
contextmessage
The context carries the routing and control data. The message carries the business data.
A callback also carries inReplyTo so that it can be tied to the original request.
A simplified Fabric packet looks like this:
{ "context": { "domain": "beckn:retail", "action": "discover", "version": "2.0.0", "bapId": "bap.example.com", "bapUri": "https://bap.example.com/callback", "transactionId": "txn-123", "messageId": "msg-456", "timestamp": "2026-03-27T00:00:00Z", "ttl": "PT30S" }, "message": { "@context": [ "https://schema.org/", "https://schema.beckn.io/core/v2.0/context.jsonld" ], "@type": "Intent" } }
The important thing to remember is this: the transport envelope and the business payload are different concerns.
The transport envelope tells you how the message should move
The business payload tells you what the message means
Transport envelope and business payload
Fabric v2 keeps these two layers separate on purpose.
The transport layer gives a stable message frame. It defines the container schemas such as Context, RequestContainer, CallbackContainer, Ack, Nack, CounterSignature, and InReplyTo.
The business layer gives the actual domain objects such as Catalog, Item, Offer, Intent, Contract, Fulfillment, Tracking, Rating, and Support.
This separation has a big benefit. The transport layer stays stable. The business layer can evolve across domains.
A note on v2 words
In older Fabric explanations, you will often see the word Order.
In Fabric v2 core schema, the more exact word is Contract. The idea is similar. It is the formal record of what the parties agreed to. In the same way, ContractItem replaces the older OrderItem.
This matters mainly at the schema layer. The transaction idea itself remains easy to understand: discovery leads to agreement, agreement leads to fulfillment, and fulfillment may be followed by support or rating.
The main request modes
The same Fabric action can be carried in different transport modes.
POST
POST is the normal mode for:
forward requests such as consumer node to DS or consumer node to provider node
callbacks such as DS to consumer node or provider node to consumer node
GET Body Mode
GET Body Mode lets a caller send a Fabric request in a GET request with a JSON body. This is useful in cases where GET semantics are needed but the caller can still send a body and expects a later callback.
GET Query Mode
GET Query Mode puts the full request and signature inside the URL query string.
This is useful for:
QR codes
deep links
bookmarkable search links
simple browser or device clients
In GET Query Mode there is no asynchronous callback. The server only returns an Ack or a Nack.
How discovery works in Fabric v2
Discovery is one of the biggest changes in Fabric v2.
In older models, discovery often depended on a gateway sending the query to many provider nodes in real time.
In Fabric v2, discovery is catalog-first.
A provider node publishes catalog updates to a CS
The CS validates and normalizes the data
The CS forwards the data to a DS
The DS indexes the catalog data
A consumer node sends a
discoverrequest to the DSThe DS returns matching catalog data
After discovery, the consumer node talks directly to the chosen provider node
This design gives three major benefits:
Discovery becomes faster
provider nodes do not need to answer every live discovery query
Catalog publication and catalog search can scale separately
The main action groups
The Fabric actions are best understood by stage.
Stage | Main actions | What they do |
|---|---|---|
Discovery |
| Find matching catalog data |
Contracting |
| Agree on scope, terms, price, and create the contract |
Fulfillment |
| Manage the live state of the contract |
Post-fulfillment |
| Handle rating and support |
Infrastructure |
| Publish supply and resolve trust data |
A simple way to think about these stages is:
Discovery - find what is available
Contracting - agree what will happen
Fulfillment - do what was agreed
Post-fulfillment - rate, support, and close the loop
A full Fabric flow at a glance
Not every transaction uses every step. For example, some networks may not use track. Some domains may not need support. Some contracts may not change after confirmation, so update may never be used.
What an implementer should build
If you want to start implementing Fabric, it helps to think role by role.
If you are building a consumer node
You usually need to build the following:
A client for calling DS and provider node endpoints
Callback endpoints for receiving
on_actionsRegistry lookup support
Message signing and signature verification
JSON-LD payload handling
Contract and fulfillment state management on the buyer side
If you are building a provider node
You usually need to build the following:
Catalog publication to a CS
Request endpoints for transaction actions
Callback sending to consumer nodes
Registry registration and key publication
Message signing and signature verification
Contract, payment, and fulfillment logic on the provider side
If you are building a Catalog Service
You need to build:
A
publishendpointCatalog validation and normalization
Deduplication and merge logic
Forwarding of normalized catalog graphs to one or more DS instances
If you are building a Discovery Service
You need to build:
A
discoverendpointAn index for
Catalog,Item,Offer, and related graphsRanking, filtering, and query logic
Callback or synchronous response handling as allowed by the network policy
If you are building any Fabric actor
You should also remember the following:
Use HTTPS
Verify signatures on every incoming message
Use the Registry for public key resolution
Treat the transport envelope as fixed
Treat the
messageas the business payloadLoad JSON-LD contexts in a controlled way. Do not trust unknown remote contexts blindly.
Summary
Fabric v2 becomes easy to understand once the separation of concerns is clear.
The network architecture tells you who talks to whom
The API specification tells you what endpoint and packet shape to use
The linked-data schema tells you what the payload means
The communication protocol tells you how signed requests, acknowledgements, and callbacks move
The workflows tell you how the actions are combined for a real business journey
At a practical level, Fabric v2 works like this:
Providers publish catalog data
Discovery services index that data
Buyer side platforms discover matching supply
Buyer and provider platforms agree on terms
The provider fulfills the contract
The parties may exchange rating or support data after that
If you understand these six ideas, you can start reading the Fabric transport files, schema files, and network guides with the right mental model.