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
- Create Reconciliation: Start a new reconciliation for a specific account and period
- Import Bank Statement: Upload or import bank statement transactions
- Match Transactions: Automatically or manually match bank transactions to ledger entries
- Resolve Differences: Address any discrepancies between bank and ledger balances
- Complete Reconciliation: Finalize the reconciliation with zero difference
The Reconciliation Object
/organizations/:organization_id/reconciliations/:id{
"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
| Attribute | Type | Description |
|---|---|---|
id | string | Unique identifier with rec_ prefix |
organization_id | string | The organization this reconciliation belongs to |
account_id | string | The account being reconciled |
account_name | string | Display name of the account |
statement_date | date | Date of the bank statement |
statement_balance | string | Balance according to bank statement |
ledger_balance | string | Balance according to ledger |
difference | string | Difference between statement and ledger (should be 0 when complete) |
status | enum | InProgress, Completed, or Cancelled |
reconciled_entries | integer | Number of matched transactions |
total_entries | integer | Total transactions in reconciliation |
notes | string | Optional reconciliation notes |
created_by | string | User who created the reconciliation |
created_at | datetime | When reconciliation was created |
updated_at | datetime | When reconciliation was last updated |
completed_at | datetime | When 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
| Attribute | Type | Description |
|---|---|---|
id | string | Unique identifier with ren_ prefix |
reconciliation_id | string | Parent reconciliation ID |
transaction_id | string | Associated transaction ID |
amount | string | Transaction amount |
entry_date | date | Date of the transaction |
description | string | Transaction description |
is_reconciled | boolean | Whether this entry has been reconciled |
reconciled_at | datetime | When entry was reconciled |
reconciled_by | string | User who reconciled the entry |
List Reconciliations
/organizations/:organization_id/reconciliationsReturns a list of reconciliations for the organization with optional filtering.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
organization_id | string | Yes | The organization ID |
Query Parameters
| Parameter | Type | Description |
|---|---|---|
account_id | string | Filter by account ID |
status | enum | Filter by status (InProgress, Completed, Cancelled) |
limit | integer | Number of results (default: 20, max: 100) |
offset | integer | Pagination 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
/organizations/:organization_id/reconciliationsCreates a new reconciliation for a specific account and period.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
organization_id | string | Yes | The organization ID |
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
account_id | string | Yes | The account to reconcile |
statement_date | date | Yes | Bank statement date |
statement_balance | string | Yes | Balance per bank statement |
notes | string | No | Optional 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
/organizations/:organization_id/reconciliations/:idRetrieves the details of a specific reconciliation including all entries.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
organization_id | string | Yes | The organization ID |
id | string | Yes | The 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
/organizations/:organization_id/reconciliations/:idUpdates reconciliation details. Use this to modify the statement balance or add notes.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
organization_id | string | Yes | The organization ID |
id | string | Yes | The reconciliation ID |
Request Body
| Parameter | Type | Description |
|---|---|---|
statement_balance | string | Updated bank statement balance |
notes | string | Updated 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
/organizations/:organization_id/reconciliations/:id/completeCompletes a reconciliation. This can only be done when the difference between statement and ledger balances is zero.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
organization_id | string | Yes | The organization ID |
id | string | Yes | The 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
/organizations/:organization_id/reconciliations/:idDeletes a reconciliation. Only reconciliations with status InProgress can be deleted.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
organization_id | string | Yes | The organization ID |
id | string | Yes | The 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
- Gather Documents: Collect bank statements and check registers
- Compare Balances: Verify statement vs. ledger balances
- Match Transactions: Systematically match each bank transaction to ledger entries
- Investigate Differences: Research and resolve any discrepancies
- Record Adjustments: Add missing transactions or corrections
- 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.
- ✨ For LLMs/AI assistants: Read our structured API reference