How reconciliation works
Blnk’s reconciliation process:- Upload external data - Import CSV/JSON files or send via API
- Define matching rules - Set criteria for identifying matches
- Start reconciliation - Choose strategy (one-to-one, one-to-many, many-to-one)
- Review results - See matched and unmatched transactions
Uploading external data
Import transactions from external sources:Upload via API (instant reconciliation)
Skip file uploads and send transactions directly:Creating matching rules
Define how to match external and internal transactions:Matching criteria fields
Amount matching
Date matching
Reference matching
Description matching
Currency matching
Reconciliation strategies
One-to-One
Match each external transaction to one internal transaction:One-to-Many
Match one external transaction to multiple internal transactions:Many-to-One
Match multiple external transactions to one internal transaction:Starting reconciliation
Dry run mode
Test reconciliation without recording matches:Viewing results
Get reconciliation details
Get matched transactions
Get unmatched transactions
Common use cases
Stripe payment reconciliation
Bank statement reconciliation
Multi-payment aggregation
Implementation code (from reconciliation.go:334-369)
The reconciliation workflow:Best practices
Start with dry runs
Always test matching rules with
is_dry_run: true firstUse multiple rules
Apply multiple matching rules for higher confidence
Allow reasonable drift
Set
allowable_drift to handle rounding and timezone differencesReview unmatched
Investigate unmatched transactions to improve matching rules
Automate uploads
Schedule regular uploads for continuous reconciliation
Archive results
Store reconciliation reports for audit trails
Troubleshooting
No matches found
Problem: Reconciliation completes but finds no matches Solutions:- Check date formats match (ISO 8601)
- Verify currency codes are identical
- Review amount precision (use same decimal places)
- Increase
allowable_driftfor amounts and dates
Too many false positives
Problem: Reconciliation matches unrelated transactions Solutions:- Add more matching criteria
- Reduce
allowable_driftvalues - Use stricter operators (“equals” instead of “contains”)
- Include reference field matching
Performance issues with large datasets
Problem: Reconciliation takes too long Solutions:- Upload in smaller batches
- Use indexed fields (reference, amount, date)
- Narrow date ranges
- Run during off-peak hours
Next steps
Webhooks
Get notified when reconciliation completes
Bulk Transactions
Process reconciled transactions in batches