GSTR-2B Reconciliation API

Match GSTR-2B auto-drafted ITC against your purchase register. Surfaces matched, unmatched, partial-match, and probable-match entries with confidence scoring.

Get sandbox keys → View OpenAPI docs Talk to sales

What is the GSTR-2B Reconciliation API?

The GSTR-2B Reconciliation API takes two inputs — your purchase register (CSV or JSON) and the GSTR-2B JSON fetched via the companion API — and returns a 4-bucket reconciliation: exact match, amount-mismatch, missing-in-2B, and missing-in-PR. Probable matches use fuzzy matching on supplier GSTIN + invoice number + date window.

Reconciliation is critical because ITC is only claimable when the supplier has filed GSTR-1 (visible in your 2B). Mismatches lead to ITC reversal at the next return cycle, so most enterprises run this API monthly before filing GSTR-3B.

Quick spec

Code examples

curl Node.jsPythonJava
curl -X POST 'https://apisandbox.whitebooks.in/gst/api/v1/gstr2b/reconcile' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{ /* payload */ }'
Node.js
const res = await fetch('https://apisandbox.whitebooks.in/gst/api/v1/gstr2b/reconcile', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer ' + accessToken,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify(payload),
});
const data = await res.json();
Python
import requests

resp = requests.post(
    'https://apisandbox.whitebooks.in/gst/api/v1/gstr2b/reconcile',
    headers={'Authorization': f'Bearer {access_token}'},
    json=payload,
)
data = resp.json()
Java
HttpRequest req = HttpRequest.newBuilder()
    .uri(URI.create("https://apisandbox.whitebooks.in/gst/api/v1/gstr2b/reconcile"))
    .header("Authorization", "Bearer " + accessToken)
    .header("Content-Type", "application/json")
    .post(BodyPublishers.ofString(payload))
    .build();
HttpResponse<String> resp = HttpClient.newHttpClient()
    .send(req, BodyHandlers.ofString());

Integrate in 3 steps

  1. Sign up at accounts.whitebooks.in — sandbox credentials issued instantly, no sales gate.
  2. Make your first call against the sandbox base URL using the code example above. Validate against your local model.
  3. Move to production once your tests pass — switch host to https://api.whitebooks.in/gst. Same payload, same response shape.

Frequently asked questions

What input format does the purchase register need?

CSV with columns (supplier_gstin, invoice_no, invoice_date, taxable_value, igst, cgst, sgst) or JSON with the same fields. Headers are case-insensitive.

How does fuzzy matching work?

When invoice numbers vary slightly (typos / different formatting), we match on supplier GSTIN + amount + date within ±5 days. Confidence score is returned per probable match.

Can I customize match tolerance?

Yes. Pass match_tolerance.amount_pct (default 0.5%) and match_tolerance.date_window_days (default 5) in the request body.

Does the API support multi-GSTIN reconciliation?

Yes — bulk endpoint accepts up to 50 GSTINs per call for the same tax period.

Explore the full GST API

This is one endpoint inside the WhiteBooks GST API suite. See the full documentation — every endpoint, every parameter, every error code.

Open the GST API page →

Related GST API endpoints

GSTR-1 Filing API → GSTR-2B Fetch API → GSTR-3B Filing API → GSTR-9 Annual Return API →