Code402 is the product and commercial home. HCRB is its API and tools service. Both are operated by Juana Limited.

HCRB / Code402 API and tools

Run the comparison.
Understand the result.

One complete request, the same engine as the workbench, and an inspectable JSON report. Start with synthetic records; no account, wallet, payment or API key is required.

1 / Run this example

Selected example: Records agree. The supplied order, payment and delivered units agree. Inspect these records visually or export all five examples.

Copy the complete JavaScript below into a file named compare.mjs. With Node.js 22 or newer installed, run node compare.mjs in that folder on Windows, macOS or Linux. Nothing executes on this page. The command sends these synthetic records to HCRB once.

// Save as compare.mjs and run: node compare.mjs (Node.js 22 or newer).
// Synthetic records only. This sends one free comparison request, never a payment.
const input = {
  "order": {
    "orderId": "sample-order-001",
    "payeeId": "sample-supplier-001",
    "currency": "USD",
    "amountMinor": "5000",
    "units": "100",
    "unitCode": "API_CALL",
    "approvedAtMs": 1750000000000,
    "deliveryDueAtMs": 1750003600000
  },
  "payments": [
    {
      "reference": "sample-payment-001",
      "orderId": "sample-order-001",
      "payeeId": "sample-supplier-001",
      "currency": "USD",
      "amountMinor": "5000",
      "settledAtMs": 1750000060000
    }
  ],
  "deliveries": [
    {
      "reference": "sample-delivery-001",
      "orderId": "sample-order-001",
      "payeeId": "sample-supplier-001",
      "units": "100",
      "unitCode": "API_CALL",
      "deliveredAtMs": 1750000120000
    }
  ]
};
const response = await fetch("https://hcrb.in/commerce/reconcile", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify(input),
});
const result = await response.json();
if (!response.ok) {
  throw new Error("Comparison refused (HTTP " + response.status + "): " + JSON.stringify(result));
}
console.log(JSON.stringify(result, null, 2));
// HTTP 200 means comparison completed. Read status, issues and next_action.
// The report is unsigned and does not prove settlement or authorize payment.
Use curl in a POSIX shell instead

This equivalent command includes its input; no separate file or SDK is needed. On Windows use the Node.js example above.

curl --fail-with-body --silent --show-error https://hcrb.in/commerce/reconcile \
  -H 'Content-Type: application/json' \
  --data-binary '{"order":{"orderId":"sample-order-001","payeeId":"sample-supplier-001","currency":"USD","amountMinor":"5000","units":"100","unitCode":"API_CALL","approvedAtMs":1750000000000,"deliveryDueAtMs":1750003600000},"payments":[{"reference":"sample-payment-001","orderId":"sample-order-001","payeeId":"sample-supplier-001","currency":"USD","amountMinor":"5000","settledAtMs":1750000060000}],"deliveries":[{"reference":"sample-delivery-001","orderId":"sample-order-001","payeeId":"sample-supplier-001","units":"100","unitCode":"API_CALL","deliveredAtMs":1750000120000}]}'

2 / Inspect the expected result

The expected status is matched. issues identifies record paths to inspect. next_action explains the next review step and always sets payment_authorized to false.

What to do next

The supplied records agree. Independently establish authority, settlement and delivery before relying on them; do not infer permission to pay.

This report does not authorize a payment. Keep the original records and the JSON result together.

Expected complete JSON response
{
  "schemaVersion": "1",
  "scope": "supplied-data-consistency-only",
  "limitations": [
    "Supplied approval, identity, ownership, settlement and delivery claims are not independently verified.",
    "Duplicate detection covers only the supplied arrays, not other requests or external systems.",
    "Currency labels, minor-unit conventions, reference namespaces and unit definitions must be agreed by the caller.",
    "No funds are moved, held, reversed or refunded; matched is not a security, legal or delivery-quality guarantee."
  ],
  "status": "matched",
  "orderId": "sample-order-001",
  "totals": {
    "paidAmountMinor": "5000",
    "deliveredUnits": "100"
  },
  "issues": [],
  "next_action": {
    "action": "inspect_evidence",
    "payment_authorized": false,
    "instruction": "The supplied records agree. Independently establish authority, settlement and delivery before relying on them; do not infer permission to pay."
  }
}

This comparison response is unsigned. It checks the consistency of supplied records; it does not independently confirm payment, delivery, authorization or quality.

3 / Adapt to one real workflow

Replace the synthetic values with redacted records you are permitted to share. Preserve the exact JSON field names. Supply an order plus arrays of payment and delivery records. Amounts and units are integer strings, not floating-point numbers. Currency labels must match; timestamps are integer epoch milliseconds. Do not send credentials, private keys, payment signatures or personal account details.

The handler is stateless: it does not retain the submitted records or execute payments. Your client must retain the response and source records. Read the service privacy policy for request metadata handling.

Maximum request: 65,536 bytes, 100 payment records and 100 delivery records. Server clients use https://hcrb.in/commerce/reconcile. Direct browser calls work only from a page hosted on HCRB or Code402 using its same-origin /commerce/reconcile route. For a browser app on your own domain, call your own backend and have it send the server request; a relative URL on your domain does not reach this service. Cross-origin browser calls are refused. The Node.js example is a server client.

Response handling
HTTP statusMeaning and next step
200The comparison ran. Read matched, mismatch or incomplete; never treat HTTP success as permission to pay.
400 / 422Malformed JSON or invalid input. Correct the request using the returned error or issue paths.
403 / 405 / 415Wrong browser origin, method or media type. Use same-origin browser requests, POST and uncompressed application/json.
408 / 413Input timed out or exceeded the size limit. Check the connection or reduce the input within documented limits.
500 / network failureNo usable comparison result. Keep your records and escalate or retry the free comparison after resolving the failure. Never infer a completed comparison.

No SDK, automatic retry, payment or allowance consumption is part of this comparison. Paid tool routes have their own contracts: preserve the original operation and use documented recovery for that route and client version. Never create a replacement payment merely because a response was lost.

Before an engagement, agree the evidence, acceptance test, price and schedule. No customer savings or production reliability claim is established by these synthetic examples.

Separate existing API offer

Need an identifier check or MCP?

The tools below are separate from the free comparison. Inspect each tool’s scope, current allowance, price and receipt contract before use.

01 / Discover

Inspect the manifest before selecting a tool. Read its input, price and scope.

Root manifest · MCP discovery · UCP discovery

02 / Try a check

The sample may use an available free allowance. If the server responds with HTTP 402, inspect the payment requirements. This example does not sign or submit a payment.

03 / Read the result

Inspect the check result and any returned receipt. An HTTP 200 alone does not mean an identifier is valid. No receipt should be inferred when none is returned.

curl https://hcrb.in/?format=json

curl https://hcrb.in/v1/tools/iban-check/call \
  -H 'Content-Type: application/json' \
  -d '{"input":{"iban":"GB82WEST12345698765432"}}'

Requests above contact the live service when you run them. Nothing runs automatically on this page.

{
  "mcpServers": {
    "code402": {
      "url": "https://hcrb.in/mcp"
    }
  }
}

For MCP clients that support remote HTTP server configuration. Client setup varies.

Full integration guide ↗

Capability catalog

Read the shared product scope and distinguish tools, demonstrations and proposed integrations.

Open catalog →

Reproducible examples

Inspect both source records and computed results. No account or payment is needed.

Open example JSON →

Existing API contracts

Use the machine surface for authenticated calls and the published API specification.

OpenAPI specification →