Available in version 0.7.0 and later.

Overview

Reconciliation compares and matches your Blnk Ledger with external records such as bank statements, payment processor reports, etc. to identify and resolve discrepancies in your financial data.

When performed effectively, reconciliation enhances operational efficiency, financial transparency, and stakeholder trust.

In this guide, you’ll learn how to run reconciliation processes with Blnk Core.


Before you start

To successfully run reconciliation, you need to first do three things:

  1. 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.

  2. 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.

  3. 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:

  1. Batch reconciliation: Ideal for scheduled bulk processing, such as daily bank reconciliations. It’s efficient for handling large volumes of transactions at once.

  2. 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:

  1. Prepare and upload your external data in a CSV or JSON file for upload.
  2. Pass the upload_id from your successful upload in the request body.
  3. Set your matching rules and reconciliation strategy.

To run your batch reconciliation, call the Start Reconciliation endpoint:

POST https://YOUR_BLNK_INSTANCE_URL/reconciliation/start
Example request
{
  "upload_id": "upload_8c700d1b-09c0-4ef4-9ab1-a0decf3d0aa3",
  "strategy": "one_to_many",
  "dry_run": false,
  "grouping_criteria": "reference",
  "matching_rule_ids": [
    "rule_890bdbc4-467f-4670-8424-5667e41daf29",
    "rule_a1b2c3d4-5678-90ef-ghij-klmnopqrstuv"
  ]
}
FieldTypeDescription
upload_idStringUnique identifier of the uploaded external record for reconciliation.
strategyStringDefines the reconciliation strategy to be used.
matching_rule_idsArrayAn array of rule ids that determine how the records are matched.
grouping_criteriaStringSpecifies the field used to group related records during reconciliation. Not required for one_to_one.
dry_runBooleanIf false, result is saved to the database. If true, it is not.

dry_run is useful for debugging and testing strategies when performing reconciliation. If set to true, Blnk performs the reconciliation and prints the result without saving to the database.


Option 2: Instant reconciliation

Available on version 0.10.1 or later.

To reconcile transactions instantly, provide the external records as an array of transactions in your request body instead of a bulk upload.

To run your reconciliation, call the Instant Reconciliation endpoint:

POST https://YOUR_BLNK_INSTANCE_URL/reconciliation/start-instant
{
  "external_transactions": [
    {
      "id": "txn1a2b3c4d5e6f7g8h9i0",
      "amount": 5.49,
      "reference": "INV-2023-002",
      "currency": "GBP",
      "description": "Card payment",
      "date": "2024-11-15T14:25:30Z",
      "source": "bank-api"
    },
    {
      "id": "txn9z8y7x6w5v4u3t2s1",
      "amount": 12.75,
      "reference": "INV-2023-003",
      "currency": "GBP",
      "description": "Subscription renewal",
      "date": "2024-11-15T14:40:15Z",
      "source": "bank-api"
    },
    {
      "id": "txn5p4o3n2m1l0k9j8h7",
      "amount": 8.99,
      "reference": "INV-2023-004",
      "currency": "GBP",
      "description": "Online purchase",
      "date": "2024-11-15T14:55:10Z",
      "source": "bank-api"
    }
  ],
  "strategy": "one_to_one",
  "matching_rule_ids": [
    "rule_04c4a59e-08a1-423b-bfae-48feebe16473"
  ]
}

Verifying reconciled transactions

You can verify if a transaction has been reconciled with Instant Reconciliation by retrieving the transaction details with the Get Transaction endpoint.

GET https://YOUR_BLNK_INSTANCE_URL/transactions/{transaction_id}

You’ll find the reconciliation results in the meta_data object as shown below:

Response
{
  ...
  "meta_data": {
    "external_txn_id": "txn9z8y7x6w5v4u3t2s1",
    "reconciled": true,
    "reconciled_at": "2025-03-15T18:11:52.61+00",
    "reconciliation_amount": 12.75,
    "reconciliation_id": "recon_9134cb8-a3f6-47e9-b566-4fb93fa051"
  }
}
FieldDescription
external_txn_idID of the matched external transaction.
reconciled: trueIf matched successfully.
reconciled_atWhen the reconciliation was done.
reconciliation_amountAmount from the external record.
reconciliation_idUnique ID of the reconciliation process.

Common use cases

Reconciliation can be a great fit for you if you are building:

  1. BNPL platforms: Verify loan disbursements and repayments match merchant records, preventing billing errors and ensuring smooth settlements.

  2. Fintech apps: Sync payments from multiple sources (e.g., cards, wallets) for accurate reporting and user trust.

  3. Crypto exchanges: Reconcile transactions between wallets, smart contracts, and fiat ramps to maintain balance integrity.

  4. Payment processors: Ensure funds move correctly between merchants, banks, and users, avoiding costly mismatches.

  5. Multi-currency systems: Align balances across regions and providers, simplifying global operations.


Need help?

We are very happy to help you make the most of Blnk, regardless of whether it is your first time or you are switching from another tool.

To ask questions or discuss issues, please contact us or join our Discord community.

Love building with Blnk? We’d love to hear your feedback. Tell us here.