What is an End-of-Day Report?
An EOD report summarizes all transactions processed through your NetPOS terminal within a 24-hour period, typically from midnight to midnight.Report Contents
Transaction Counts
Transaction Amounts
Transaction List
Settlement Info
Accessing End-of-Day Reports
EOD reports can be accessed from the Dashboard.Navigate to EOD
DashboardFragment.kt:249, 275, 400 and calls showCalendarDialog().Select date
- Today
- Previous Days
Wait for data fetch
Data Fetch Process
Data Fetch Process
- Primary: Fetch from backend server via API (
getTransactionsFromNewService()) - Fallback: Retrieve from local device database if server unavailable
- Retry: Automatic retry up to 2 times on network errors
- Error Handling: Graceful degradation to local data
DashboardFragment.kt:440-523 and DashboardFragment.kt:718-824.Report Summary Screen
The EOD summary bottom sheet (LayoutPrintEndOfDayBinding at DashboardFragment.kt:600-680) displays:
Key Metrics
responseCode == "00".approvedList.sumOf { it.amount }.div(100).formatCurrencyAmount()Only approved transactions are included in this total.Filter Options
The report summary includes chip group filters (DashboardFragment.kt:623-625):
- All Transactions
- Print Approved
- Print Declined
Printing EOD Reports
From the EOD summary screen, you can print transaction reports.Select filter
- All Transactions
- Approved Only
- Declined Only
Tap Print button
Wait for printing
- Formats transaction data for thermal receipt
- Sends print commands via Bluetooth/USB to printer
- Prints header with date and report type
- Prints each transaction in the filtered list
- Prints summary totals at the end
printEndOfDay() extension function at DashboardFragment.kt:636.Receipt produced
- Header: “END OF DAY REPORT” with date
- Terminal Info: Terminal ID, Merchant ID, Business Name
- Transaction List: Each transaction with:
- Masked PAN
- Amount
- Status (Approved/Declined)
- Response code
- Time
- Summary: Total count, approved count, declined count, total amount
- Footer: Report generated timestamp
Printing Error Handling
If printing fails:- Toast message shows the error (e.g., “Printer not connected”)
- Error details are logged for troubleshooting
- You can retry printing after resolving the issue
- Alternative: View detailed transaction list and export/share digitally
Viewing Transaction Details
From the EOD summary, you can view the full transaction list.Tap View button
DashboardFragment.kt:661-675.Transaction History opens
HISTORY_ACTION_EOD which:- Hides the History/Search tabs (not needed for EOD view)
- Uses
EODAdapterinstead of regularTransactionsAdapter - Shows all transactions for the selected date
Review transactions
- Masked card number (e.g., 506099******1234)
- Transaction amount
- Status indicator (green for approved, red for declined)
- Transaction date and time
- Transaction type
PDF_REPRINT_IDENTIFIER appended to localDate_13 at DashboardFragment.kt:666) to distinguish EOD reprints from regular reprints.Date Range Selection
The EOD report uses a precise 24-hour window for transaction filtering.Time Calculation
When you select a date, NetPOS calculates:-
Beginning of Day: Selected date at 00:00:00 (midnight)
- Calculated using
getBeginningOfDay(timestamp)atDashboardFragment.kt:442, 720
- Calculated using
-
End of Day: Selected date at 23:59:59
- Calculated as beginning + 86400 seconds (24 hours)
Timestamp.from(Instant.ofEpochMilli(be).plusSeconds(86400)).timeatDashboardFragment.kt:443, 721
-
Date Formatting: Dates are formatted for both local database and server API
- Local format: Milliseconds timestamp
- Server format: “dd:MM:yyyy hh:mm:ss” converted to server-expected format
- Implemented at
DashboardFragment.kt:444-461, 722-739
Data Source Priority
NetPOS uses a smart data fetching strategy for EOD reports:Backend Server (Primary)
- Most up-to-date transaction data
- Includes transactions synced from other sources
- Requires network connectivity
- Paginated results (up to 1000 transactions per request)
Local Database (Fallback)
- Available offline
- Contains all locally processed transactions
- May not include transactions from other terminals (for multi-terminal merchants)
- Immediate response (no network delay)
Automatic Fallback Logic
Implemented atDashboardFragment.kt:490-495 and DashboardFragment.kt:767-786:
- Try backend server first
- If server returns empty results, try local database
- On network error, automatically fall back to local database
- If both sources have data, prefer backend (more authoritative)
Report Reconciliation
Use EOD reports for daily business reconciliation.Reconciliation Process
Generate EOD at close of business
Print approved transactions report
Verify totals
- Total approved amount matches your expected revenue
- Transaction count aligns with your records
- All transactions are legitimate and authorized
Review declined transactions
- Patterns in decline reasons
- Any transactions that should have succeeded but didn’t
- Customer service follow-ups needed
Compare with bank settlement
- Settlement amount should match EOD approved total
- Account for any fees or chargebacks
- Investigate any discrepancies
Common Reconciliation Issues
EOD total doesn't match bank settlement
EOD total doesn't match bank settlement
- Transactions still pending settlement
- Chargebacks or refunds not yet processed
- Transactions from previous day settled today
- Processing fees deducted
- Check settlement date vs transaction date
- Review refunds processed during the period
- Contact payment processor for settlement details
- Compare transaction RRNs with settlement report
Missing transactions in EOD report
Missing transactions in EOD report
- Transactions processed after generating report
- Transactions not synced to backend
- Date filter excludes edge cases (around midnight)
- Regenerate report to include latest transactions
- Check local database for unsynced transactions
- Verify transaction timestamps
- Ensure background sync worker completed
Declined transactions in settlement
Declined transactions in settlement
- Verify response codes in EOD report
- Check if transaction was reversed and retried as approved
- Contact processor if declined transaction was charged
Duplicate transactions in report
Duplicate transactions in report
- Customer retry after timeout (created separate transactions)
- Technical issue in transaction logging
- Check RRNs - duplicates will have different RRNs
- Review timestamps - true duplicates will be milliseconds apart
- Verify with customer if both were charged
- Refund if necessary
Amount Formatting
All amounts in EOD reports are handled in kobo (smallest currency unit) and converted for display:- Internal storage: Amount in kobo (e.g., 500000 for ₦5,000.00)
- Display: Amount divided by 100 and formatted with currency symbol
- Calculation: Sum performed on kobo values, then converted
DashboardFragment.kt:611:
- No floating-point rounding errors
- Accurate penny-level accounting
- Consistent amount representation
No Transactions Handling
If no transactions exist for the selected date:- EOD summary shows all counts as 0
- Total amount shows ₦0.00
- Print button shows toast: “No transactions to print”
- View button shows toast: “No transactions to view”
- Days when terminal was not used
- New terminals without transaction history
- Future dates (obviously)
Best Practices for EOD Reports
Daily Routine
Print and Archive
Verify Before Closing
Investigate Anomalies
Tips and Tricks
Quick Current Day Report
Quick Current Day Report
Weekly Summary
Weekly Summary
Month-End Reporting
Month-End Reporting
Offline Reconciliation
Offline Reconciliation
Dispute Resolution
Dispute Resolution
Troubleshooting
EOD Report Not Loading
- Check internet connection for server fetch
- Verify date selected is not in the future
- Ensure terminal ID is configured correctly
- Check local database has transactions for that date
Printer Won’t Print EOD
- Verify printer is connected and powered
- Check thermal paper is loaded
- Ensure printer battery is charged
- Test with a single transaction reprint first
EOD Totals Seem Wrong
- Verify the date selected is correct
- Check you’re filtering approved transactions only for revenue
- Review transaction list for any unexpected entries
- Compare backend vs local database results
Can’t Cancel Data Fetch
If the progress dialog Cancel button doesn’t work:- Wait for fetch timeout (typically 30 seconds)
- Check network connectivity
- Restart NetPOS app if completely stuck