Payment Reconciliation
Reconciliation allows matching payments generated by PCH-SIG with mobile money payment operator statements (TELECEL, Orange Money, MTN).
Overviewβ
Supported operatorsβ
| Operator | Code | Color | File format |
|---|---|---|---|
| TELECEL | telecel | Red π΄ | CSV (;) or Excel |
| Orange Money | orange_money | Orange π | CSV (;) or Excel |
| MTN Mobile Money | mtn | Yellow π‘ | CSV (,) or Excel |
Create a reconciliation sessionβ
Step 1: Parameter selectionβ
- Go to Payments > Reconciliation
- Click on New reconciliation
- Select:
| Field | Description | Required |
|---|---|---|
| Operator | TELECEL, Orange Money or MTN | Yes |
| Start period | Transaction start date | Yes |
| End period | Transaction end date | Yes |
| Cycle | Concerned payment cycle | No |
Step 2: Import operator fileβ
Download the operator statement and import it into the system.
TELECEL formatβ
| Column | Description |
|---|---|
| Transfer ID | Internal reference |
| Phone | Beneficiary number |
| Amount (FCFA) | Transferred amount |
| Transfer Status | SUCCESS, FAILED, IN PROGRESS |
| Date | Transaction date |
| Message / Operator Ref. | Operator reference |
| Transfer Order ID | Cycle code (e.g.: PCH-GB-001-C-16) |
| Beneficiary Name | Beneficiary's name |
| Remaining Balance (FCFA) | Operator account balance |
Orange Money formatβ
| Column | Description |
|---|---|
| Transaction ID | Transaction reference |
| Recipient Phone | Beneficiary number |
| Amount | Amount |
| Status | Status |
| Transaction Date | Date/time |
MTN formatβ
| Column | Description |
|---|---|
| TransRef | Transaction reference |
| MSISDN | Beneficiary number |
| Amount | Amount |
| TxnStatus | Status |
| DateTime | Date/time |
Step 3: Execute matchingβ
After import, click Execute matching to run the matching algorithm.
Matching algorithmβ
The system uses a multi-criteria algorithm to match transactions:
Matching priorityβ
-
Reconciliation key (TELECEL only, score 100)
- Format:
245{phone}-{beneficiarycode}
- Format:
-
Exact reference (score 100)
- Direct match by external reference
-
Fuzzy matching (score 60+)
- Phone: +20 points
- Exact amount (Β±1 FCFA): +40 points
- Close amount (Β±1%): +20 points
- Same day: +40 points
- Β±3 days: +20 points
Match statusesβ
| Status | Code | Description | Action |
|---|---|---|---|
| Exact match | exact | Everything matches perfectly | Accept |
| Fuzzy match | fuzzy | Score >= 60, manual verification | Verify |
| Amount discrepancy | amount_gap | Payment found, different amount | Correct |
| Status discrepancy | status_gap | Payment found, different status | Correct |
| Not found internal | not_found_internal | External transaction without payment | Investigate |
| Not found external | not_found_external | Payment without transaction | Investigate |
Discrepancy resolutionβ
Available actionsβ
| Action | Code | Description |
|---|---|---|
| Accept | accepted | Validate the entry as is |
| Correct | corrected | Update payment with external data |
| Reject | rejected | Mark as invalid/rejected |
Individual resolutionβ
- Click on an entry with discrepancy
- Verify details (internal vs external)
- Add an explanatory comment
- Choose the resolution action
Batch resolutionβ
- Filter entries by status
- Select multiple entries
- Click Batch resolution
- Apply the action to all selections
TELECEL integrationβ
Automatic balance extractionβ
The system automatically extracts the operator account balance from the last line of the TELECEL file:
TELECEL file imported
β
Extract "Remaining Balance (FCFA)"
β
Update OperatorAccount.currentBalance
β
Create adjustment movement
Cycle codeβ
TELECEL includes the cycle identifier in the "Transfer Order ID" column (e.g.: PCH-GB-001-C-16), allowing automatic linking of transactions to the cycle.
Impact on operator accountsβ
During resolution:
- Accept + status "successful" β Debit from operator account
- Correct + status "successful" β Debit from operator account + payment update
- Reject β No accounting impact
Session statisticsβ
| Indicator | Description |
|---|---|
| Lines imported | Total transactions from file |
| Matches | Exact + Fuzzy |
| Discrepancies | Amount + Status |
| Not found | Internal + External |
| Match rate | (Exact + Fuzzy) / Total * 100 |
| Variance | Total amount discrepancy |
Finalizationβ
Once all entries are resolved:
- Verify no entry is "Pending"
- Click Finalize session
- The session status changes to "Completed"
- The cycle can be updated if necessary
Export resultsβ
Available formats:
| Format | Content |
|---|---|
| CSV | Raw data for analysis |
| Excel | Detailed report with formatting |
| Summary report for archiving |
Cycle constraintsβ
:::warning Important
Reconciliation is not possible on cycles with completed status.
Cycles with validated and in_progress status can be reconciled.
:::
Best practicesβ
:::tip Recommendations
- Reconcile regularly: At the end of each cycle
- Verify discrepancies: Don't ignore different amounts
- Document rejections: Add explanatory comments
- Archive reports: Keep PDF exports
- Monitor not-found: May indicate data issues :::
Required permissionsβ
| Action | Permission |
|---|---|
| View sessions | reconciliation.view |
| Create session | reconciliation.create |
| Resolve entries | reconciliation.resolve |
| Finalize | reconciliation.finalize |