Reconciliation Rail
Reconciliation Rail
Section titled “Reconciliation Rail”Transaction reconciliation, matching, and exception handling.
Overview
Section titled “Overview”The Reconciliation Rail provides endpoints for reconciling transactions across systems, automated matching, and managing reconciliation exceptions.
Base URL
Section titled “Base URL”/api/v1/reconciliationEndpoints
Section titled “Endpoints”Create Reconciliation Job
Section titled “Create Reconciliation Job”POST /api/v1/reconciliation/jobsCreate a new reconciliation job.
Request Body:
{ "name": "Daily Bank Reconciliation", "type": "BANK_STATEMENT", "sourceSystem": "CORE_BANKING", "targetSystem": "BANK_FEED", "matchingRules": ["AMOUNT_EXACT", "DATE_RANGE", "REFERENCE_FUZZY"], "dateRange": { "from": "2025-01-14", "to": "2025-01-14" }, "tolerance": { "amount": "0.01", "dateDays": 1 }}Response:
{ "data": { "jobId": "rec_abc123", "status": "PENDING", "createdAt": "2025-01-15T10:00:00Z" }}Run Job
Section titled “Run Job”POST /api/v1/reconciliation/jobs/:jobId/runExecute reconciliation job.
Response:
{ "data": { "jobId": "rec_abc123", "status": "COMPLETED", "summary": { "sourceCount": 1500, "targetCount": 1498, "matchedCount": 1480, "unmatchedSource": 20, "unmatchedTarget": 18, "matchRate": 0.987, "totalAmount": "15000000.00", "matchedAmount": "14750000.00" }, "completedAt": "2025-01-15T10:05:00Z" }}Get Job Status
Section titled “Get Job Status”GET /api/v1/reconciliation/jobs/:jobIdGet job status and summary.
List Jobs
Section titled “List Jobs”GET /api/v1/reconciliation/jobsQuery Parameters:
| Parameter | Type | Description |
|---|---|---|
status | string | Filter by status |
type | string | Filter by type |
dateFrom | string | Date range start |
Get Exceptions
Section titled “Get Exceptions”GET /api/v1/reconciliation/jobs/:jobId/exceptionsGet unmatched items (exceptions).
Response:
{ "data": [ { "exceptionId": "exc_123", "type": "UNMATCHED_SOURCE", "sourceRecord": { "transactionId": "txn_abc", "amount": "5000.00", "date": "2025-01-14", "reference": "PAY-001" }, "possibleMatches": [ { "recordId": "bank_xyz", "amount": "5000.00", "date": "2025-01-15", "matchScore": 0.85 } ] } ]}Resolve Exception
Section titled “Resolve Exception”POST /api/v1/reconciliation/exceptions/:exceptionId/resolveResolve an exception.
Request Body:
{ "resolution": "MANUAL_MATCH", "matchedRecordId": "bank_xyz", "notes": "Date difference due to weekend processing"}Upload Statement
Section titled “Upload Statement”POST /api/v1/reconciliation/statementsUpload a bank statement for reconciliation.
Request Body (multipart/form-data):
file: statement.csvformat: CSVbankCode: SABBaccountNumber: 1234567890Create Matching Rule
Section titled “Create Matching Rule”POST /api/v1/reconciliation/rulesCreate custom matching rule.
Request Body:
{ "name": "Amount + Reference Match", "priority": 100, "conditions": [ { "field": "amount", "operator": "EQUALS" }, { "field": "reference", "operator": "CONTAINS" } ], "tolerance": { "amountPercent": 0.01 }}Job Types
Section titled “Job Types”| Type | Description |
|---|---|
| BANK_STATEMENT | Bank statement reconciliation |
| INTERCOMPANY | Intercompany transactions |
| NOSTRO | Nostro account reconciliation |
| CARD_SETTLEMENT | Card settlement reconciliation |
| CUSTOM | Custom reconciliation |
Matching Operators
Section titled “Matching Operators”| Operator | Description |
|---|---|
| EQUALS | Exact match |
| CONTAINS | Contains substring |
| FUZZY | Fuzzy matching |
| RANGE | Within range |
| REGEX | Regular expression |
Exception Types
Section titled “Exception Types”| Type | Description |
|---|---|
| UNMATCHED_SOURCE | No match in target |
| UNMATCHED_TARGET | No match in source |
| AMOUNT_MISMATCH | Amounts differ |
| DATE_MISMATCH | Dates differ |
| DUPLICATE | Duplicate records |
Resolution Types
Section titled “Resolution Types”| Resolution | Description |
|---|---|
| MANUAL_MATCH | Manual matching |
| IGNORE | Ignore exception |
| ADJUST | Create adjustment |
| INVESTIGATE | Mark for investigation |
Events
Section titled “Events”| Event | Description |
|---|---|
reconciliation.job.started | Job started |
reconciliation.job.completed | Job completed |
reconciliation.exception.created | Exception found |
reconciliation.exception.resolved | Exception resolved |
See Also
Section titled “See Also”- Clearing Rail - Settlement
- Reporting Rail - Reports