Available in version 0.7.0 and later.
Before you start
To successfully run reconciliation, you need to first do three things:- Prepare your external data: Format your external data according to the specified structure to enable seamless matching with your Ledger. See External Data Preparation for details.
- Define your matching rules: Set rules to compare fields like amount, date, or reference between your ledger and external records. These rules determine how closely records must match. See Matching Rules for details.
- Set your reconciliation strategy: Specify how transactions are distributed between both records, e.g., one transaction in your ledger can be split into 2 or more in a bank statement. See Reconciliation Strategies for details.
Reconciliation options
Blnk offers two reconciliation options based on your needs:- Batch reconciliation: Ideal for scheduled bulk processing, such as daily bank reconciliations. It’s efficient for handling large volumes of transactions at once.
- Instant reconciliation: Best for real-time accuracy, like immediate fraud detection or on-the-fly transaction matching. It ensures your ledger stays up-to-date as transactions occur.
Option 1: Batch reconciliation
To reconcile in batches, you need to:- Prepare and upload your external data in a CSV or JSON file for upload.
- Pass the
upload_idfrom your successful upload in the request body. - Set your matching rules and reconciliation strategy.
Response
| Field | Type | Description |
|---|---|---|
upload_id | String | Unique identifier of the uploaded external record for reconciliation. |
strategy | String | Defines the reconciliation strategy to be used. |
matching_rule_ids | Array | An array of rule ids that determine how the records are matched. |
grouping_criteria | String | Specifies the field used to group related records during reconciliation. Not required for one_to_one. |
dry_run | Boolean | If false, result is saved to the database. If true, it is not. |
Option 2: Instant reconciliation
Available on version 0.10.1 or later.
Max number of external transactions is 10,000 per request.
Response
Get reconciliation results
Both start endpoints return onlyreconciliation_id. Poll Get reconciliation for run status, match counts, and timestamps.
Save the reconciliation ID
Store
reconciliation_id from the start response. You need it for every status poll.Poll until the run finishes
Call
GET /reconciliation/{reconciliation_id} until status is completed or failed.Response
Batch runs may return
status: "in_progress" on early polls. Instant runs may already be completed on the first poll, but you still need the GET response to read match counts and verify the result.Verifying reconciled transactions
You can verify whether a transaction was reconciled by retrieving its details with the Get Transaction endpoint.meta_data object as shown below:
Response
| Field | Description |
|---|---|
external_txn_id | ID of the matched external transaction. |
reconciled: true | If matched successfully. |
reconciled_at | When the reconciliation was done. |
reconciliation_amount | Amount from the external record. |
reconciliation_id | Unique ID of the reconciliation process. |
Common use cases
Reconciliation can be a great fit for you if you are building:- BNPL platforms: Verify loan disbursements and repayments match merchant records, preventing billing errors and ensuring smooth settlements.
- Fintech apps: Sync payments from multiple sources (e.g., cards, wallets) for accurate reporting and user trust.
- Crypto exchanges: Reconcile transactions between wallets, smart contracts, and fiat ramps to maintain balance integrity.
- Payment processors: Ensure funds move correctly between merchants, banks, and users, avoiding costly mismatches.
- Multi-currency systems: Align balances across regions and providers, simplifying global operations.