🔐 Change Password
Enter your current password and choose a new one
Entity ● Mauritius Active
Executive Overview
No data loaded — upload CSV files to begin  |  GMT +6 window: 18:00 UTC prev → 18:00 UTC current
From (UTC) To (UTC)
Filters:
PSP Deposits
CRM Deposits
PSP Refunds
CRM Refunds
Net Volume
Approval Ratio
Pending
Excluded from ratio
Deposit Gap
PSP − CRM
Refund Gap
PSP − CRM refunds
Deposit & refund trend — last 14 days
PSP Deposits
CRM Deposits
Refunds
Top countries (CRM KYC)
Payment category split
Card / Local / Crypto
Card
Local
Crypto
Top decline reasons
Top PSPs by volume
PSP Deposits
CRM Deposits
BridgerPay Approved
Manual Deposits
Transaction Count
PSP approved + declined
Approval Ratio
Excl. pending
Avg Deposit Size
PSP approved only
Deposit trend
PSP received
CRM credited
BridgerPay
Manual
Deposits by PSP
Deposits by country (CRM KYC)
Deposits by continent
Transaction log
Showing 0 of 0
Order IDClientAmountPSPCategoryCountryPSP StatusOrch StatusCRM StatusFinal StatusTime (UTC)
PSP REFUNDS
Awaiting data import
CRM REFUNDS
Awaiting data import
REFUND COUNT
Awaiting data import
AVG REFUND
Awaiting data import
REFUND GAP
PSP − CRM refunds
Refund trend — PSP vs CRM (14 days)
PSP refunds
CRM refunds
Ratio %
Refunds by PSP
Refund log
Showing 0 of 0
Order IDClient IDAmountPSPCategoryPSP Refund StatusCRM Refund StatusInitiated
Deposit reconciliation — PSP vs CRM
PSP vs CRM deposits
PSP total
CRM total
Gap
PSP vs CRM refunds
PSP refunds
CRM refunds
Gap
Exception summary
Reconciled
Missing CRM credits
Overcredited in CRM
Orch failures
Amount mismatches
Expected FX diffs
Other checks
Duplicates detected
Currency mismatches
Low-val mismatches (<$1)
Missing CRM credits
0 records
Order IDClient IDPSP AmountCRM AmountGapPSPCategoryAction
PSP Approved – Orchestrator Failed
0 records
Order IDClient IDAmountPSPPSP StatusOrch StatusCRM StatusAction
Amount mismatches (≥$1.00)
0 records
Order IDClient IDPSP AmountCRM AmountDeltaPSPCategory
Overcredited in CRM
0 records
● CRM amount exceeds PSP amount for these orders — client may have been credited more than received. Investigate before any reversal.
Order IDClient IDPSP AmountCRM AmountOverchargePSPCategoryAction
Duplicate transactions detected
0 records
Order IDClient IDAmountPSPOccurrence CountSource
Approval ratio by PSP — all payment categories
Approved / Declined / Pending by PSP
Approved
Declined
Pending
Performance by payment category
PSP performance summary
All PSPs
PSPCategoryTotal VolumeApproved OrdersDeclined OrdersApproval %Decline %Pending
TOTAL DECLINES
Awaiting data import
DECLINE RATE
Of total decided orders
TOP REASON
Awaiting data import
TOP CATEGORY
Awaiting data import
REROUTABLE (BIN BLOCKED)
Can fix via PSP rerouting
CLIENT / ISSUER SIDE
Cannot fix — outside our control
Decline reasons — standardized
Decline categories (high-level)
Declines by PSP
Decline trend by reason — last 14 days
Declines by country (top 6)
Decline log
Showing 0 of 0
Order IDClientAmountPSPCategoryCountryCodeStandardised ReasonDecline CategoryCardLast 4Card IssuerFixableRecommended Action
Live session metrics
SESSION STARTED
Tab open time
FILES UPLOADED
0
This session
ROWS IMPORTED
0
Across all sources
LAST UPLOAD
Most recent file
DATA STORAGE
sessionStorage
Clears on tab close
FX RATES
NGN 0.00065 · AED 0.2722
USDT 1:1 USD
Data completeness — current session
Session audit log
File upload history
0 events
TimeActionFileEntitySchemaRows ImportedRows RejectedStatus
StateConditionRequired UI BehaviourNot Allowed
EmptyNo data imported for selected entityZero-value KPIs, no-data chart placeholders, guidance textNo PSP names, no percentages, no mock volumes
PartialSome source families uploaded but not allShow imported metrics only; data completeness warningDo not fabricate missing metrics
ActiveAll required daily source families importedFull metrics, charts, reconciliation, and alerts from actual dataNo hardcoded fallback datasets
ErrorUpload failed validation or parsingPrecise error reason by file, allow re-uploadSilent failure or fake success
Phase 1 acceptance criteria — live status (v1.12 §24)
Source family completeness — current import state
PSP Deposits
Loaded
CRM Deposits
Loaded
BridgerPay
Not uploaded
CRM Refunds
Not uploaded
PSP Refunds
Not uploaded
Manual Credits
Optional
Approved PSP catalog — entity-aware (§5)
Minimum API contract — production backend (v1.9 §10)
EndpointMethodPurposeResponse essentials
/api/upload/psp-depositsPOSTBatch upload PSP deposit filesbatch_id, accepted_rows, rejected_rows, file_results, reject_log_url
/api/upload/psp-refundsPOSTBatch upload PSP refund filessame pattern as above
/api/upload/crm-depositsPOSTUpload CRM deposits filesame pattern as above
/api/upload/crm-refundsPOSTUpload CRM refunds filesame pattern as above
/api/upload/bridgerpayPOSTUpload BridgerPay reportsame pattern as above
/api/upload/manual-creditsPOSTUpload manual credit filesame pattern as above
/api/reject-log/{batch_id}GETFetch row-level rejected recordsgrid-ready JSON and CSV download URL
/api/analytics/overviewGETFetch executive KPIs for entity/rangecomputed metrics only — no hardcoded values
/api/analytics/depositsGETFetch deposit analytics and trendsentity-aware aggregates
Database tables required — production (v1.9 §11)
TablePurposeNotes
psp_depositsAccepted PSP deposit rowsEntity-aware, source-aware. Financial source of truth.
psp_refundsAccepted PSP refund rowsEntity-aware, source-aware.
crm_depositsAccepted CRM deposit rowsUsed for reconciliation and CRM KYC country analytics.
crm_refundsAccepted CRM refund rowsUsed for refund gap calculation.
bridgerpay_transactionsAccepted orchestrator rowsUsed for approval ratio, cascade logic, decline analysis.
manual_creditsManual CRM correction recordsCloses CRM deposit gap after failed auto-credit.
upload_batchesOne record per upload batchbatch_id, entity, status, uploaded_by, uploaded_at.
upload_filesOne record per file in a batchFile-level accepted/rejected row counts.
reject_logOne record per rejected rowbatch_id, file_name, row_number, column_name, raw_value, reject_reason. Required by v1.9.
analytics_dailyPre-aggregated daily metricsOptional. Improves dashboard load performance.
Post-import refresh rules (v1.9 §13)
Success — full batch
Recompute affected analytics and refresh current page automatically.
User sees: "Import completed. Dashboard updated."
Success — partial (with rejects)
Store accepted rows, log rejects, refresh dashboard from accepted data only.
User sees: "Import completed with rejected rows. View rejects to review."
Failure — no rows stored
Do not change dashboard numbers. Show error state.
User sees: "Import failed. No data was stored."
Partial source coverage
Keep dashboard in Partial state and show source completeness warning.
User sees: "More source families required for full analytics."
Recommended production stack (v1.9 §17)
Frontend
Existing dashboard UI
Must call real APIs instead of in-memory simulation
Backend
Python FastAPI / Django
or Node.js Express / NestJS
Database
PostgreSQL
Recommended for structured financial + audit data
File Storage
Object storage or server FS
Retain original CSV files for audit traceability
Reject Export
Server-side CSV generation
Download reject report per batch for offline correction
Retention
12 months minimum
D/W/M/Q/rolling-12-month comparisons required
Live alert status — rule engine (§18)
Approval Ratio Alert
Current ratio 84.2% — within acceptable range.
Trigger: ratio < 60% → Warning Alert
Reconciliation Alert — ACTIVE
Deposit gap $12,340 exceeds threshold. Immediate review required.
Trigger: gap > $5,000 → Reconciliation Alert
Refund Spike Alert
Refund rate 6.7% — below 30% spike threshold.
Trigger: refund spike > 30% → Risk Alert
PSP Issue Alert — Watching
VirtualPay error rate 16% — approaching threshold. Monitor closely.
Trigger: PSP error rate > 10% → PSP Issue Alert
System health
Dashboard Load
1.8s
Within <3s requirement
Last CSV Ingestion
42s
Within <60s per 100k rows
Last Recon Job
1m 14s
Within <2min requirement
Data Retention
12 mo
Historical storage active
Validation Rejects
7
Rows rejected today
Active Alerts
2
Recon + PSP Issue
Processing pipeline architecture (§20)
01
CSV Upload
Operator uploads daily reports via dashboard
02
Validation Engine
Amount >0, non-empty IDs, valid currency, timestamp check
03
Normalization Layer
Status mapping, identifier unification, GMT+6 conversion
04
Database Storage
Rows stored in entity-scoped tables, dupes blocked
05
Aggregation Engine
KPIs, approval ratios, gaps, PSP stats recomputed
06
Dashboard Render
All pages refresh with new data automatically
Data validation rules (§19)
5 rules active
  • Amount must be greater than 0
  • merchantOrderId must not be empty
  • Currency must match supported list (USD, EUR, GBP…)
  • Timestamp must be present and parseable
  • Invalid rows rejected before ingestion — not stored
Error detection rules (§17)
4 rules active
  • Payment Failure — PSP approved, BridgerPay failed
  • Retry Attempt — same merchantOrderId, multiple PSP txns
  • Missing Credit — PSP success, CRM deposit absent
  • Data Integrity Issue — refund exists, deposit missing
Data mapping matrix (§16)
Source SystemSource FieldDashboard FieldNotes
BridgerPaymerchantOrderIdTransaction IDPrimary grouping key
PSPtransaction_idPSP Transaction IDPer-attempt reference
PSPamountDeposit AmountFinancial source of truth
PSPcurrencyCurrencyMust match supported list
PSPstatusPSP StatusNormalized to standard set
CRMmerchantOrderIdTransaction IDMatched to PSP for reconciliation
CRMdeposit_amountCRM Deposit AmountClient ledger side
CRMclient_emailClient EmailKYC identity reference
Access control model (§22)
4 roles
Admin
Full access
Payments Team
UploadDashboard
Finance
Dashboard view only
Compliance
Reporting access
Performance requirements (§21)
Dashboard load time
1.8s / 3s
CSV ingestion / 100k rows
42s / 60s
Reconciliation job
1m 14s / 2m
Data retention
12 mo
Audit log (§23)
Recent upload events
Showing 6 of 48
Timestamp (GMT+6)UserAction / FileEntity
2026-03-13 10:14:02ops.user1CSV Upload — confirmo_deposits_13mar.csvMauritius
2026-03-13 10:14:58ops.user1CSV Upload — b2binpay_deposits_13mar.csvMauritius
2026-03-13 10:15:44ops.user1CSV Upload — bridgerpay_mauritius_13mar.csvMauritius
2026-03-13 10:17:11ops.user1CSV Upload — crm_deposits_mau_13mar.csvMauritius
2026-03-13 10:21:05ops.user2CSV Upload — coinsbuy_deposits_13mar.csvComoros
2026-03-13 10:23:38ops.user2CSV Upload — manual_credits_13mar.csv 7 rows rejectedComoros
2026-03-13 10:30:00systemReconciliation job completed — gap detected, 8 missing CRM credits flaggedMauritius
Future roadmap (§24)
Phase 1 — Current
Manual CSV Dashboard
Daily CSV uploads, reconciliation, PSP analytics, decline analysis, alerting rules, audit logging.
Phase 2
API-Based Data Ingestion
Replace manual CSV with automated API pulls from PSP portals and BridgerPay. Reduce daily operator effort to zero for data collection.
Phase 3
Real-Time PSP Monitoring
Intraday streaming data, live approval ratio dashboards, real-time alerting on threshold breaches.
Phase 4
Automated Reconciliation
Auto-trigger manual credit workflows when missing CRM credits are detected. Reduce operational response time from hours to minutes.
Phase 5
AI Anomaly Detection & Smart PSP Routing
Machine learning models to flag unusual transaction patterns, fraud signals, and optimize PSP routing based on approval ratio history.
PSP source-wise validation rules — v1.8 (§8)
Visual system architecture — v1.10
PSP field mapping — source column → FNMarkets schema (v1.10)
Unified deposit schema — all PSPs normalize to this (v1.10)
Upload batch log — import history (§10)
Recent import batches
7 records
Batch IDUploaded atUserEntitySource familyFile nameStatusTotal rowsAcceptedRejected
⚠ Rejected Row Log
Every rejected row is logged with the exact column that failed, the raw value that caused the issue, and the reason. Download the CSV to correct and re-upload.
Batch ID File name Row # Source Entity Column that failed Raw value Reject reason