Integritas Provenance
Blockchain-verified proof of every x402 payment settlement, powered by Integritas and the Minima blockchain
RelAI settlement provenance can be hashed and anchored on the Minima blockchain via Integritas. This creates an immutable, independently verifiable record of every settlement - who paid, who received, how much, on which network, and when.
Integritas stamp receipts are buyer-controlled. Consumers opt in per request, choose a settlement flow, and receive stamp metadata in the payment response headers.
How It Works
Buyer opts in and chooses flow
Client sends X-Integritas: true and X-Integritas-Flow: single|dual
User pays via x402
An EIP-3009 signature or Solana transaction is submitted to the RelAI Facilitator
Facilitator settles on-chain
Payment is executed on the target blockchain (SKALE, Base, Avalanche, Solana, etc.)
Settlement data is hashed
SHA3-256 hash is computed from: network, txHash, payer, payTo, amount, timestamp
Hash is anchored on Minima
Integritas stamps the hash on the Minima blockchain, creating an immutable record
Metadata returned to client
The settle result is propagated via PAYMENT-RESPONSE / X-PAYMENT-RESPONSE, including tx hash and optional Integritas receipt payload
Enable Integritas & Choose Flow
Integritas is optional per request. To enable stamping, set the Integritas header and pick a flow. In the dashboard Endpoint Form, enabling the Integritas switch now requires selecting a flow.
Required request headers
X-Integritas: true X-Integritas-Flow: single | dual
Flow behavior
- single (single-signature): one user signing action. Settlement includes split metadata and fee validation. On EVM, facilitator collects total then splits merchant + Integritas fee (and can retain facilitator fee). On Solana, one transaction contains multiple SPL transfer legs (merchant + Integritas fee, plus optional collector leg). Wallet UIs usually show net balance change, so displayed debit can be lower than total split if one leg returns to the signer.
- dual: network-specific legacy path. On EVM this uses separate base and Integritas fee accepts. On Solana this falls back to surcharge mode when single flow is not selected.
Example
curl -X POST https://api.relai.fi/relay/<apiId>/<path> \ -H "Authorization: Bearer <token>" \ -H "X-Integritas: true" \ -H "X-Integritas-Flow: single"
Fee Model
Integritas has two fee components:
- -
integritasFeeAmount: stamp/provenance fee sent to Integritas fee wallet. - -
integritasFacilitatorFeeAmount: optional facilitator compensation for split transfer execution costs.
Single flow total
totalAmount = baseAmount + integritasFeeAmount + integritasFacilitatorFeeAmount
Environment configuration
# Integritas fee (stamp) INTEGRITAS_FEE_AMOUNT= INTEGRITAS_FEE_WALLET= INTEGRITAS_FEE_WALLET_EVM= INTEGRITAS_FEE_WALLET_SOLANA= # Optional facilitator compensation INTEGRITAS_FACILITATOR_FEE_AMOUNT=0 INTEGRITAS_FACILITATOR_FEE_AMOUNT_EVM=0 INTEGRITAS_FACILITATOR_FEE_AMOUNT_SOLANA=0
What Gets Stamped
The provenance hash is a deterministic SHA3-256 of the following settlement fields:
| Field | Description |
|---|---|
| network | Blockchain network (e.g. skale-base, solana, base) |
| txHash | On-chain transaction hash of the settlement |
| payer | Wallet address of the payer (API consumer) |
| payTo | Wallet address of the recipient (API provider) |
| amount | Payment amount in atomic units (e.g. USDC with 6 decimals) |
| timestamp | ISO 8601 timestamp of when the settlement occurred |
Because all fields are included in the hash, any modification to even a single field would produce a completely different hash, making tampering detectable.
Verify a Settlement
Anyone can verify that a settlement was legitimately recorded. There are two ways:
1. Via RelAI API
GET https://api.relai.fi/provenance/verify?hash=<sha256hex>
2. Directly via Integritas
POST https://integritas.minima.global/core/v2/verify/file
Headers:
Content-Type: application/json
x-api-key: <your-integritas-api-key>
Body:
{ "hash": "<sha256hex>" }API Reference
Integritas request headers
These headers are sent to paid relay endpoints when buyers enable Integritas stamp:
X-Integritas: true X-Integritas-Flow: single | dual
GET/provenance/verify
Verify a provenance hash against the Integritas blockchain records. Returns full verification details.
Query Parameters
hash (required) - SHA3-256 hex string to verify
Example
curl https://api.relai.fi/provenance/verify?hash=a1b2c3...
Response:
{
"hash": "a1b2c3...",
"verified": true,
"details": { ... }
}GET/provenance/check
Quick check whether a hash exists on the blockchain. Returns a simple found/not-found result.
Query Parameters
hash (required) - SHA3-256 hex string to check
Example
curl https://api.relai.fi/provenance/check?hash=a1b2c3...
Response:
{
"hash": "a1b2c3...",
"found": true,
"details": { ... }
}POST/provenance/compute
Compute the provenance hash from settlement data. Useful for client-side verification - reproduce the same hash yourself.
Request Body
{
"network": "skale-base",
"txHash": "0xabc123...",
"payer": "0x1234...",
"payTo": "0x5678...",
"amount": "100",
"timestamp": "2026-02-14T00:00:00.000Z"
}Response
{
"hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
}Reproduce the Hash Locally
The provenance hash is fully deterministic. You can reproduce it locally using any SHA3-256 implementation:
JavaScript / Node.js
import crypto from 'crypto';
const payload = JSON.stringify({
network: "skale-base",
txHash: "0xabc123...",
payer: "0x1234...",
payTo: "0x5678...",
amount: "100",
timestamp: "2026-02-14T00:00:00.000Z"
});
const hash = crypto.createHash("sha3-256").update(payload).digest("hex");
console.log(hash);
// Then verify: GET /provenance/check?hash=<hash>Python
import hashlib, json
payload = json.dumps({
"network": "skale-base",
"txHash": "0xabc123...",
"payer": "0x1234...",
"payTo": "0x5678...",
"amount": "100",
"timestamp": "2026-02-14T00:00:00.000Z"
}, separators=(',', ':'))
hash = hashlib.sha3_256(payload.encode()).hexdigest()
print(hash)Settlement Response
For successful paid calls, middleware returns base64-encoded JSON in PAYMENT-RESPONSE (and X-PAYMENT-RESPONSE). This payload includes transaction metadata and optional Integritas fields:
PAYMENT-RESPONSE: base64({
x402Version,
scheme,
network,
transaction,
payer,
amount,
asset,
splitTransfers?,
integritasFeePaid?,
provenance?,
integritas?
})In the Dashboard endpoint tester, this decoded payload is shown under paymentMeta in the response panel.
{
"success": true,
"transaction": "p9hge2...",
"transactionHash": "p9hge2...",
"network": "solana",
"payer": "GH93...",
"integritasFeePaid": true,
"splitTransfers": {
"combinedTx": "p9hge2..."
},
"provenance": {
"provenanceHash": "e3b0c44298fc1c149afb...",
"timestamp": "2026-02-20T13:11:38.128Z",
"verifyUrl": "https://api.relai.fi/provenance/verify?hash=..."
},
"integritas": {
"hash": "be55eb0dc80c5c4b...",
"timestamp": "2026-02-20T13:11:38.128Z",
"network": "solana",
"txHash": "p9hge2...",
"payer": "GH93...",
"payTo": "D1rU...",
"amount": "1200",
"feeAmount": "1000",
"stamped": true,
"stampData": { "status": "success", "data": { "service": "MINIMA_NODE" } }
}
}provenance is present when API-level provenance is enabled.integritas is present when buyer opt-in stamping is requested and completed. Together, these fields provide auditable settlement proof and optional Integritas receipt details.
About Integritas
Integritas is a middleware solution for real-time data verification and validation, built on the Minima blockchain. It provides tamper-proof timestamping, hash verification, and cryptographic proof generation.
Key Features
- - Data hashing and blockchain anchoring in real time
- - Hash verification against on-chain records
- - NFT and PDF report generation for audit trails
- - API v2 with stamp, verify, and check endpoints
- - MCP server for AI agent integration
For more information, visit the Integritas documentation.