Back to Home
OCDS 1.1Procurement Module

Open Contracting Data Standard (OCDS) on Blockchain

OpenGovChain's procurement module implements the Open Contracting Data Standard — the global benchmark for publishing structured, comparable procurement data — directly on an immutable blockchain ledger.

Every stage of the contracting process, from planning through implementation, is captured as on-chain transactions that anyone can query and verify. No data can be retroactively altered, ensuring the highest level of accountability for public spending.

What is OCDS?
The international standard for open contracting data, maintained by the Open Contracting Partnership

The Open Contracting Data Standard (OCDS) provides a structured schema for publishing data about every stage of the public contracting process. Developed by the Open Contracting Partnership, it is used by governments and organizations in over 30 countries to make procurement data accessible, comparable, and actionable.

OCDS defines a common vocabulary for procurement data — including planning, tender, award, contract, and implementation stages — enabling cross-border analysis, anti-corruption monitoring, and better value for money in public spending.

The Full Contracting Lifecycle On-Chain

Each stage of the contracting process is captured as a blockchain transaction, creating an immutable record from start to finish.

1
Planning

Budget allocation, rationale, and procurement planning documents are published on-chain.

Msg/CreateProcess
2
Tender

Tender details including items, submission deadlines, and eligibility criteria are recorded.

Msg/PublishTender
3
Award

Award decisions with supplier details, evaluation results, and contract values.

Msg/SubmitAward
4
Contract

Signed contract details, terms, milestones, and delivery schedules committed to the chain.

Msg/SignContract
5
Implementation

Milestones, transactions, and delivery updates tracked through to completion.

Msg/UpdateImplementation
Contracting Process Flow
How procurement data flows through the OCDS stages on-chain, unified by a single Open Contracting Identifier (OCID)

Every stage is linked by a single identifier

OCID: ocds-abc123-procurement-001

1

Planning

  • Budget allocation
  • Procurement rationale
  • Timeline estimates
tag: planning
2

Tender

  • Items & quantities
  • Submission deadline
  • Procurement method
  • Eligibility criteria
tag: tender
3

Award

  • Selected supplier(s)
  • Evaluation results
  • Award value
tag: award
4

Contract

  • Signed terms
  • Milestones
  • Delivery schedule
  • Contract value
tag: contract
5

Implementation

  • Milestone progress
  • Financial transactions
  • Delivery documents
tag: implementation

Each stage generates an immutable OCDS release stored on-chain. Releases are compiled into a single record per contracting process, providing a complete audit trail that can never be altered or deleted.

On-Chain Data Model
Key data structures stored on the OpenGovChain blockchain for procurement transparency

Contracting Process

The core unit of OCDS data. Each process is identified by a unique OCID (Open Contracting Identifier) and contains the compiled release that aggregates all stages.

ocid: string
owner: address
current_stage: planning | tender | award | contract | implementation
compiled_release: Release
release_ids: string[]

Release

An individual update to a contracting process. Each release captures one or more changes (planning, tender, award, contract, implementation) and is tagged accordingly.

ocid: string
id: release_id
tag: string[]
planning / tender / awards / contracts: structured data
parties: Organization[]

Entity Registry

Organizations participating in procurement can be registered on-chain with verified identifiers. This creates a reusable registry of procuring entities and suppliers.

entity_id: string
organization: name, identifier, address, roles
registrar: address
active: boolean

Document Verification

Procurement documents (bid notices, evaluation reports, contracts) are stored on IPFS with content hashes recorded on-chain for tamper-proof verification.

ipfs_cid: content identifier
content_hash: SHA-256
document_type: string
date_published: timestamp
Query Endpoints
Public REST API endpoints for querying procurement data on-chain
GET
/govchain/procurement/v1/process

List all contracting processes

GET
/govchain/procurement/v1/process/{ocid}

Get a specific contracting process by its OCID

GET
/govchain/procurement/v1/releases/{ocid}

Get all releases for a contracting process

GET
/govchain/procurement/v1/ocds/records/{ocid}

Get OCDS-compliant record package for a process

GET
/govchain/procurement/v1/ocds/releases/{ocid}

Get OCDS-compliant release package for a process

GET
/govchain/procurement/v1/tenders

List all published tenders

GET
/govchain/procurement/v1/entity

List all registered entities

GET
/govchain/procurement/v1/entity/{entity_id}

Get a specific registered entity

Blockchain Transactions
On-chain message types for the procurement module
Msg/CreateProcess

Initiate a new contracting process with planning data, buyer information, and a unique OCID.

Msg/PublishTender

Publish tender details including items, submission method, value, and procurement method.

Msg/SubmitAward

Record an award decision with selected suppliers, evaluation details, and award value.

Msg/SignContract

Commit a signed contract with terms, milestones, value, and delivery schedule.

Msg/UpdateImplementation

Update contract implementation with milestones, transactions, and delivery documents.

Msg/SubmitRelease

Submit a full OCDS release for any stage, enabling maximum flexibility.

Msg/RegisterEntity

Register a new organization (buyer, supplier, etc.) on the on-chain entity registry.

Msg/UpdateEntity

Update an existing registered entity's organization details.

Module Parameters
Configurable governance parameters for the procurement module
allowed_ocid_prefixes

Approved OCID prefixes (e.g., ocds-abc123) that can be used for contracting processes. See OCDS identifier guidance.

default_currency

Default currency code (e.g., PHP) used for monetary values when not specified.

public_bidding_threshold

Minimum value requiring public competitive bidding procedures.

alternative_method_threshold

Maximum value allowed for alternative procurement methods.

min_tenderers_open

Minimum number of tenderers required for open procurement methods.

require_entity_verification

Whether entities must be verified before they can participate in processes.