Bank Reconciliations

Bank reconciliation is a critical accounting process that ensures your recorded transactions match your bank statements. Crane Ledger provides comprehensive reconciliation tools to automate and track this process, maintaining accurate financial records and identifying discrepancies.

Reconciliation Workflow

Typical Reconciliation Process

  1. Create Reconciliation: Start a new reconciliation for a specific account and period
  2. Import Bank Statement: Upload or import bank statement transactions
  3. Match Transactions: Automatically or manually match bank transactions to ledger entries
  4. Resolve Differences: Address any discrepancies between bank and ledger balances
  5. Complete Reconciliation: Finalize the reconciliation with zero difference

The Reconciliation Object

GET/organizations/:organization_id/reconciliations/:id
Auth required
1 credits
{
  "id": "rec_xxxxxxxxxxxxxxxx",
  "organization_id": "org_xxxxxxxxxxxxxxxx",
  "account_id": "act_xxxxxxxxxxxxxxxx",
  "account_name": "Checking Account",
  "statement_date": "2024-01-31",
  "statement_balance": "15750.00",
  "ledger_balance": "15800.00",
  "difference": "-50.00",
  "status": "InProgress",
  "reconciled_entries": 15,
  "total_entries": 18,
  "notes": "January bank reconciliation",
  "created_by": "user_xxx",
  "created_at": "2024-02-01T09:00:00Z",
  "updated_at": "2024-02-01T14:30:00Z",
  "completed_at": null
}

Attributes

AttributeTypeDescription
idstringUnique identifier with rec_ prefix
organization_idstringThe organization this reconciliation belongs to
account_idstringThe account being reconciled
account_namestringDisplay name of the account
statement_datedateDate of the bank statement
statement_balancestringBalance according to bank statement
ledger_balancestringBalance according to ledger
differencestringDifference between statement and ledger (should be 0 when complete)
statusenumInProgress, Completed, or Cancelled
reconciled_entriesintegerNumber of matched transactions
total_entriesintegerTotal transactions in reconciliation
notesstringOptional reconciliation notes
created_bystringUser who created the reconciliation
created_atdatetimeWhen reconciliation was created
updated_atdatetimeWhen reconciliation was last updated
completed_atdatetimeWhen reconciliation was completed (null if in progress)

The Reconciliation Entry Object

{
  "id": "ren_xxxxxxxxxxxxxxxx",
  "reconciliation_id": "rec_xxxxxxxxxxxxxxxx",
  "transaction_id": "txn_xxxxxxxxxxxxxxxx",
  "amount": "500.00",
  "entry_date": "2024-01-15",
  "description": "Check #1234 - Office Supplies",
  "is_reconciled": true,
  "reconciled_at": "2024-02-01T10:15:00Z",
  "reconciled_by": "user_xxx"
}

Entry Attributes

AttributeTypeDescription
idstringUnique identifier with ren_ prefix
reconciliation_idstringParent reconciliation ID
transaction_idstringAssociated transaction ID
amountstringTransaction amount
entry_datedateDate of the transaction
descriptionstringTransaction description
is_reconciledbooleanWhether this entry has been reconciled
reconciled_atdatetimeWhen entry was reconciled
reconciled_bystringUser who reconciled the entry

List Reconciliations

GET/organizations/:organization_id/reconciliations
Auth required

Returns a list of reconciliations for the organization with optional filtering.

Path Parameters

ParameterTypeRequiredDescription
organization_idstringYesThe organization ID

Query Parameters

ParameterTypeDescription
account_idstringFilter by account ID
statusenumFilter by status (InProgress, Completed, Cancelled)
limitintegerNumber of results (default: 20, max: 100)
offsetintegerPagination offset

Response

{
  "object": "list",
  "data": [
    {
      "id": "rec_xxxxxxxxxxxxxxxx",
      "organization_id": "org_xxxxxxxxxxxxxxxx",
      "account_id": "act_xxxxxxxxxxxxxxxx",
      "account_name": "Checking Account",
      "statement_date": "2024-01-31",
      "statement_balance": "15750.00",
      "ledger_balance": "15800.00",
      "difference": "-50.00",
      "status": "InProgress",
      "reconciled_entries": 15,
      "total_entries": 18,
      "created_at": "2024-02-01T09:00:00Z"
    },
    {
      "id": "rec_yyyyyyyyyyyyyyyy",
      "organization_id": "org_xxxxxxxxxxxxxxxx",
      "account_id": "act_yyyyyyyyyyyyyyyy",
      "account_name": "Savings Account",
      "statement_date": "2024-01-31",
      "statement_balance": "25000.00",
      "ledger_balance": "25000.00",
      "difference": "0.00",
      "status": "Completed",
      "reconciled_entries": 5,
      "total_entries": 5,
      "completed_at": "2024-02-02T11:30:00Z"
    }
  ],
  "has_more": false,
  "total_count": 2
}

Create Reconciliation

POST/organizations/:organization_id/reconciliations
Auth required
5 credits

Creates a new reconciliation for a specific account and period.

Path Parameters

ParameterTypeRequiredDescription
organization_idstringYesThe organization ID

Request Body

ParameterTypeRequiredDescription
account_idstringYesThe account to reconcile
statement_datedateYesBank statement date
statement_balancestringYesBalance per bank statement
notesstringNoOptional reconciliation notes

Response

{
  "id": "rec_xxxxxxxxxxxxxxxx",
  "organization_id": "org_xxxxxxxxxxxxxxxx",
  "account_id": "act_xxxxxxxxxxxxxxxx",
  "account_name": "Checking Account",
  "statement_date": "2024-01-31",
  "statement_balance": "15750.00",
  "ledger_balance": "15800.00",
  "difference": "-50.00",
  "status": "InProgress",
  "reconciled_entries": 0,
  "total_entries": 18,
  "notes": "January bank reconciliation",
  "created_at": "2024-02-01T09:00:00Z",
  "updated_at": "2024-02-01T09:00:00Z",
  "entries": [
    {
      "id": "ren_xxxxxxxxxxxxxxxx",
      "transaction_id": "txn_xxxxxxxxxxxxxxxx",
      "amount": "500.00",
      "entry_date": "2024-01-15",
      "description": "Check #1234 - Office Supplies",
      "is_reconciled": false
    }
  ]
}

Get Reconciliation

GET/organizations/:organization_id/reconciliations/:id
Auth required
1 credits

Retrieves the details of a specific reconciliation including all entries.

Path Parameters

ParameterTypeRequiredDescription
organization_idstringYesThe organization ID
idstringYesThe reconciliation ID

Response

{
  "id": "rec_xxxxxxxxxxxxxxxx",
  "organization_id": "org_xxxxxxxxxxxxxxxx",
  "account_id": "act_xxxxxxxxxxxxxxxx",
  "account_name": "Checking Account",
  "statement_date": "2024-01-31",
  "statement_balance": "15750.00",
  "ledger_balance": "15800.00",
  "difference": "-50.00",
  "status": "InProgress",
  "reconciled_entries": 15,
  "total_entries": 18,
  "notes": "January bank reconciliation",
  "created_at": "2024-02-01T09:00:00Z",
  "updated_at": "2024-02-01T14:30:00Z",
  "entries": [
    {
      "id": "ren_xxxxxxxxxxxxxxxx",
      "transaction_id": "txn_xxxxxxxxxxxxxxxx",
      "amount": "500.00",
      "entry_date": "2024-01-15",
      "description": "Check #1234 - Office Supplies",
      "is_reconciled": true,
      "reconciled_at": "2024-02-01T10:15:00Z"
    },
    {
      "id": "ren_yyyyyyyyyyyyyyyy",
      "transaction_id": "txn_yyyyyyyyyyyyyyyy",
      "amount": "-2000.00",
      "entry_date": "2024-01-20",
      "description": "Deposit - Client Payment",
      "is_reconciled": false
    }
  ]
}

Update Reconciliation

PUT/organizations/:organization_id/reconciliations/:id
Auth required
5 credits

Updates reconciliation details. Use this to modify the statement balance or add notes.

Path Parameters

ParameterTypeRequiredDescription
organization_idstringYesThe organization ID
idstringYesThe reconciliation ID

Request Body

ParameterTypeDescription
statement_balancestringUpdated bank statement balance
notesstringUpdated reconciliation notes

Response

{
  "id": "rec_xxxxxxxxxxxxxxxx",
  "organization_id": "org_xxxxxxxxxxxxxxxx",
  "account_id": "act_xxxxxxxxxxxxxxxx",
  "statement_date": "2024-01-31",
  "statement_balance": "15725.00",
  "ledger_balance": "15800.00",
  "difference": "-75.00",
  "status": "InProgress",
  "notes": "Updated balance after bank fee review",
  "updated_at": "2024-02-01T15:45:00Z"
}

Complete Reconciliation

POST/organizations/:organization_id/reconciliations/:id/complete
Auth required
5 credits

Completes a reconciliation. This can only be done when the difference between statement and ledger balances is zero.

Path Parameters

ParameterTypeRequiredDescription
organization_idstringYesThe organization ID
idstringYesThe reconciliation ID

Response

{
  "id": "rec_xxxxxxxxxxxxxxxx",
  "organization_id": "org_xxxxxxxxxxxxxxxx",
  "status": "Completed",
  "statement_balance": "15800.00",
  "ledger_balance": "15800.00",
  "difference": "0.00",
  "completed_at": "2024-02-01T16:00:00Z",
  "reconciled_entries": 18,
  "total_entries": 18
}

Completion Requirements

A reconciliation can only be completed when difference equals "0.00". If there are outstanding differences, you must either adjust the statement balance, add missing transactions, or resolve discrepancies before completing.


Delete Reconciliation

DELETE/organizations/:organization_id/reconciliations/:id
Auth required
5 credits

Deletes a reconciliation. Only reconciliations with status InProgress can be deleted.

Path Parameters

ParameterTypeRequiredDescription
organization_idstringYesThe organization ID
idstringYesThe reconciliation ID

Response

{
  "id": "rec_xxxxxxxxxxxxxxxx",
  "deleted": true
}

Reconciliation Best Practices

Frequency

  • Monthly: Reconcile bank accounts at month-end
  • Weekly: For high-volume accounts or during busy periods
  • Daily: For critical accounts requiring immediate verification

Process Steps

  1. Gather Documents: Collect bank statements and check registers
  2. Compare Balances: Verify statement vs. ledger balances
  3. Match Transactions: Systematically match each bank transaction to ledger entries
  4. Investigate Differences: Research and resolve any discrepancies
  5. Record Adjustments: Add missing transactions or corrections
  6. Verify Zero Difference: Ensure perfect balance before completion

Common Reconciliation Issues

  • Outstanding Checks: Checks written but not yet cleared
  • Deposits in Transit: Deposits recorded but not yet on statement
  • Bank Fees: Automatic charges not recorded in ledger
  • Interest Earned: Automatic credits not recorded
  • Timing Differences: Transactions recorded in different periods

Audit Trail

  • Always document reconciliation notes for future reference
  • Maintain records of adjustments and corrections
  • Keep completed reconciliations for regulatory compliance
  • Use reconciliation reports for financial statement preparation

Automation Benefits

  • Auto-matching: System identifies obvious matches
  • Rule-based: Custom rules for recurring transactions
  • Bulk Operations: Process multiple entries efficiently
  • Exception Reporting: Highlight unusual or unmatched items

Financial Controls

Regular bank reconciliations are essential for internal controls, fraud detection, and accurate financial reporting. They help identify errors, unauthorized transactions, and timing differences.


Need help?

Create a free account to access our support portal. Once signed in, use the Support tab in your dashboard to submit a support ticket — our team typically responds within 24 hours.