Reconciliation is a vital component of financial operations, essential for maintaining precise and reliable financial records. This process involves comparing and matching internal records (your Blnk ledger) with external statements (such as payment processor reports and bank statements) to identify and rectify any discrepancies. The primary goal of reconciliation is to ensure that all records accurately represent the company’s financial position at all times.

Regular, meticulous, and effective reconciliation enhances operational efficiency, financial transparency, and stakeholder trust. This includes banking partners, customers, investors, and regulatory bodies, all of whom rely on the accuracy of your financial reporting.

In this guide, you’ll learn how to perform reconciliation in 4 steps.

Let’s dive in ✨

  1. Upload external data: Import external data from payment processor reports, bank statements, and other systems and prepare them for reconciliation.
  2. Set matching rules: Define how transactions should be compared and matched.
  3. Define reconciliation strategies: Choose thes type of reconciliation you want to perform.
  4. Run reconciliation: Initiate a reconciliation.

1. Upload external data

Your external data is any document that holds the records of all transaction activity outside of your Blnk Ledger. Learn more: External Data Preparation.

First, ensure that your data includes these six fields:

FieldTypeDescription
amountFloatThe transaction amount, e.g. 100.50
currencyStringISO 4217 currency code, e.g. “USD”
sourceStringOrigin of the transaction data, e.g. “Stripe”
descriptionStringTransaction details or narration, e.g., “Monthly subscription”
referenceStringUnique identifier of the transaction, e.g., “ref_128GA6Ag1298ahkj”
dateISO 8601Transaction date and time, e.g., “2023-04-15T14:30:00Z”

Next, upload with the following endpoint:

Request
curl --location '<https://YOUR_BLNK_INSTANCE_URL/reconciliation/upload>' \\
--header 'Authorization: Bearer YOUR_API_KEY' \\
--form 'file=@"transactions.json"' \\
--form 'source="Stripe"'

We support both CSV and JSON file types for external data upload.

Response
{
  "upload_id": "upload_8c700d1b-09c0-4ef4-9ab1-a0decf3d0aa3",
  "record_count": 1000,
  "source": "Stripe"
}

2. Set matching rules

Blnk uses matching rules to understand how you want to compare and reconcile your records. This is the most central aspect of the reconciliation process.

To set a rule, you need to give it a name, description, and define its criteria. To learn more about matching rules: Matching Rules.

Supported attributes and operators

Matching rules are used to match your internal data from your Blnk Ledger and external data. Supported fields are:

AttributesSupported operatorsDescription
amountequals, greater_than, less_thanMatch by amount, e.g. external amount should equals internal amount.
currencyequalsMatch by currency, e.g. external currency should equals internal currency.
referenceequals, containsMatch by reference, e.g. external reference should equals internal reference
descriptionequals, containsMatch by description, e.g., internal description should contain part of or equals external description.
dateequals, greater_than, less_thanMatch by date and time, e.g., external transaction date is greater than internal transaction date.

Handling discrepancies with drifts

  1. Amount Drift: Allows for differences in transaction amounts. For example, if your internal record shows a transaction amount of $100, an amount drift of 1% (0.01) would allow for the external statement to report the amount as anything between $99 and $101.

  2. Date Drift: Allows for differences in transaction dates. For example, a time drift value of 3600 seconds permits a 1-hour difference in transaction dates, accommodating timing discrepancies.

Creating a matching rule

To create a matching rule, call the following endpoint:

POST https://YOUR_BLNK_INSTANCE_URL/reconciliation/matching-rules

And pass the following request body:

Request
{
    "name": "Default matcher",
    "description": "Amount with 1% drift matcher"
    "criteria": [
        {
            "field": "amount",
            "operator": "equals",
            "allowable_drift": 0.01
        },
        {
            "field": "currency",
            "operator": "equals"
        },
        {
            "field": "date",
            "operator": "equals",
            "allowable_drift": 1800
        },
        {
            "field": "reference",
            "operator": "contains"
        }
    ]
}

The above matching rule matches internal and external transaction records with:

  • Equal amounts with a 1% drift.
  • The same currency.
  • The same date with a 30 mins drift, i.e. +/- 30 mins.
  • References that contain “ref_”

3. Define reconciliation strategies

Reconciliation strategies are essential for maintaining accurate financial records and ensuring that all transactions and payments are correctly matched based on your unique financial workflows. Learn more: Reconciliation Strategies.

  1. One-to-One: one_to_one is used for a direct match between an internal transaction record in your Blnk Ledger and an external transaction record.
  2. One-to-Many: one_to_many is used when one external transaction represents multiple internal transactions (e.g., batch or split payments).
  3. Many-to-One: many_to_one is used when multiple external transaction records make up one internal transaction record (e.g., installment payments, ACH transfers, etc.).

4. Run reconciliation

Once you’ve set your matching rules and determined your reconciliation strategy, you can initiate reconciliation with this endpoint:

POST https://YOUR_BLNK_INSTANCE_URL/reconciliation/start
Example
{
  "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"
  ]
}

This reconciliation example:

  1. Uses one-to-many as its reconciliation strategy.
  2. Groups transactions by parent, currency, and status.
  3. Groups similar internal transaction records based on their reference. Learn more
  4. Applies two different matching rules.
  5. Saves the reconciliation result to the database.

Understanding dry run

Dry run (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.

If set to false, the result is saved to the database.

Best practices

  1. Iterative Refinement: Initially, set up general rules that can capture a wide range of transactions. Identify any patterns or recurring issues and adjust the matching criteria to be more precise.

  2. Custom Fields: Use metadata or custom fields to include additional matching criteria specific to your business. Metadata provides additional data points attached to transactions, such as customer ID or region.

  3. Partial Matching: For complex scenarios, consider implementing a scoring system for partial matches. Partial matches occur when transactions do not match exactly but share several similar attributes. A scoring system assigns scores to different matching criteria (e.g., amount, date, description).

    If a transaction’s cumulative score exceeds a certain threshold, it is considered a match. For example, a transaction might match 80% of the criteria based on amount and date but differ slightly in description. The scoring system can still identify it as a likely match by assigning higher scores to critical criteria like transaction amount and lower scores to less critical ones like description.

  4. Automated Scheduling: Set up automated daily or weekly reconciliation jobs using Blnk’s API and a task scheduler.

  5. Exception Handling: Develop a process for manually reviewing and resolving unmatched transactions. Exception handling involves a systematic approach to address transactions that do not match automatically, requiring human intervention to investigate and resolve discrepancies.

  6. Performance Optimization: For large datasets, use date ranges and batching to improve reconciliation speed. Limiting the scope of reconciliation to specific periods reduces the volume of data processed at once. For instance, reconcile transactions on a daily/weekly basis instead of monthly to manage smaller datasets.

  7. Audit Trails: Maintain detailed logs of all reconciliation activities for auditing purposes. Audit trails are comprehensive records of all actions taken during the reconciliation process, including changes made, rules applied, and transactions matched.

Learn more

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 join our Discord community.