Overview
Refunds and reprints are accessed through the Transactions menu and transaction history screens.Refunds
Reverse a previous transaction and return funds to the customer’s card
Reprints
Generate duplicate receipts for any past transaction
Processing Refunds
Refunds allow you to reverse a previous purchase transaction and credit the customer’s card.When to Use Refunds
- Customer returns purchased goods
- Service was not delivered as expected
- Transaction was processed in error
- Customer was overcharged
- Product was defective or damaged
Refund Process
Access transaction history
From the Dashboard:
- Tap Transactions tile
- Select Reprint (which opens transaction history)
Find the transaction to refund
Locate the original purchase transaction:
- Use the History tab to browse recent transactions
- Use the Search tab to find by amount, card number, or date
- Tap the transaction to open transaction details
Only approved transactions with response code “00” can be refunded.
Initiate refund
On the Transaction Details screen (
TransactionDetailsFragment.kt):- Tap the REFUND action button (if visible for the transaction type)
- The system validates that the transaction is eligible for refund
- Transaction was approved (response code “00”)
- Transaction has not already been refunded
- Refund is within the allowed time window (typically 180 days)
Read customer card
The card reader dialog appears. The customer must present the same card used for the original transaction.
Card reading process:
Why the same card?
Why the same card?
For security and verification purposes, refunds must be processed to the same card used for the original purchase. This prevents fraud and ensures funds return to the correct customer.
- Insert, tap, or swipe the customer’s card
- System verifies the card matches the original transaction PAN
- Customer may need to enter PIN (depends on card and amount)
Wait for refund authorization
NetPOS processes the refund:
- Sends refund request to payment gateway
- Routes through NIBSS to card issuer
- Card issuer authorizes the credit
- Funds are credited back to the customer’s card
Refund processing uses
viewModel.refundTransaction(requireContext()) at TransactionDetailsFragment.kt:157.View refund result
The transaction result dialog appears showing:
- Refund Status: Approved or Declined
- Refund Amount: Amount credited to card
- Original Transaction: Reference to the original purchase
- Refund RRN: Unique reference for the refund
- Date & Time: Refund timestamp
Refund Receipt Contents
A refund receipt includes:- Transaction Type: “REFUND” (prominently displayed)
- Original Transaction Details: Original RRN, date, amount
- Refund Details: Refund RRN, date, amount
- Card Information: Masked PAN
- Terminal & Merchant Info: Terminal ID, Merchant ID, business name
- Response Code: “00” for approved refunds
- Timestamp: Date and time of refund processing
Partial Refunds
NetPOS currently processes full refunds only. To refund a partial amount, you would need to process a new purchase for the difference amount. Check with your payment processor for partial refund support.
Refund Time to Settlement
After a successful refund:- Immediate: Refund is authorized and logged
- 1-3 business days: Funds typically appear in customer’s account
- 5-10 business days: Maximum time for most card issuers
Reprinting Receipts
Receipt reprinting allows you to generate duplicate receipts for any past transaction.When to Reprint
- Customer lost their original receipt
- Merchant copy was misplaced
- Thermal print faded over time
- Printer malfunction during original transaction
- Customer requests email/digital copy
Reprint Process
Access Reprint menu
Method 1 - From Dashboard:
- Tap Transactions tile
- Select Reprint from transaction menu
- Navigate to any transaction in history
- Open transaction details
- Use reprint action
Some builds (like Wema and Zenith) require a password to access reprint functionality for security. This is configured at
TransactionsFragment.kt:58-67.Enter reprint password (if required)
If your build has reprint password protection:
- Password entry dialog appears
- Enter the reprint password (set in Settings)
- Tap Proceed
Setting/Changing Reprint Password
Setting/Changing Reprint Password
The reprint password is configured in terminal settings and stored in shared preferences under
PREF_REPRINT_PASSWORD. Contact your administrator to set or reset this password.Select reprint option
The Reprint screen (
ReprintFragment.kt) displays options:- Reprint One Transaction: Reprint a single transaction (most common)
- Reprint All Transactions: Bulk reprint (advanced feature)
Find the transaction
The transaction history screen opens with action set to
HISTORY_ACTION_REPRINT.Browse or search for the transaction:- History tab: Scroll through recent transactions
- Search tab: Search by amount, card, date, or reference number
View transaction details
The Transaction Details screen opens showing all transaction information.The screen automatically sets
viewModel.setAction(HISTORY_ACTION_REPRINT) to indicate this is a reprint operation.Choose receipt format
The Print Type dialog appears with options:
- Customer Copy
- Merchant Copy
- Download
Prints a customer receipt:
- Header: “CUSTOMER COPY”
- All transaction details
- No signature line
Reprint Receipt Marking
Reprinted receipts may include:- “REPRINT” watermark: Indicates this is a duplicate
- Original timestamp: Shows when the original transaction occurred
- Reprint timestamp: Shows when the receipt was reprinted (in some formats)
Receipt Storage and PDF Generation
When downloading or sharing receipts:- PDF Layout Initialization:
initViewsForPdfLayout()populates receipt template with transaction data (TransactionDetailsFragment.kt:271-275) - PDF Creation:
createPdf()generates PDF from the layout (TransactionDetailsFragment.kt:266) - Permission Handling: Storage permission requested if not already granted (
TransactionDetailsFragment.kt:258-268) - File Saving: PDF saved to Downloads with descriptive filename
- Share Intent: For sharing, PDF file is attached to Android share intent
pdfUtils package.
Bulk Reprint (Advanced)
The “Reprint All Transactions” option allows printing multiple receipts: Use cases for bulk reprint:- End-of-day merchant copies for all transactions
- Backup receipts for accounting/audit
- Batch receipt generation for customer service
SMS Receipts
Both refunds and reprints support SMS receipt delivery.SMS Receipt Process
Enter phone number
Type the customer’s 11-digit Nigerian phone number (e.g., 08012345678).Validation:
- Must be exactly 11 digits
- Format: 0XXXXXXXXXXX
Send SMS
Tap Send button. The system:
- Formats transaction details as SMS text
- Calls SMS API (
viewModel.sendSmS()atTransactionDetailsFragment.kt:196) - Sends SMS to the provided number
SMS Receipt Contents
Example SMS format:Printer Error Handling
If printing fails during refund or reprint, the Printer Error dialog appears.Common Printer Errors
Printer Not Connected
Printer Not Connected
Error: “Printer not connected” or “Bluetooth printer disconnected”Solution:
- Check printer is powered on
- Verify Bluetooth pairing
- Reconnect printer in Settings
- Ensure printer is in range
Out of Paper
Out of Paper
Error: “Printer out of paper” or “No paper detected”Solution:
- Replace thermal paper roll
- Ensure paper is loaded correctly
- Check paper feed mechanism
Low Battery
Low Battery
Error: “Printer battery low”Solution:
- Charge the printer
- Use while charging if urgent
- Replace battery if old
Paper Jam
Paper Jam
Error: “Paper jam” or “Feed error”Solution:
- Open printer cover
- Remove jammed paper
- Reload paper properly
- Clean paper feed rollers
Printer Busy
Printer Busy
Error: “Printer busy” or “Print queue full”Solution:
- Wait for current print job to finish
- Restart printer if stuck
- Clear print queue
Printer Error Dialog Options
When a printer error occurs (TransactionDetailsFragment.kt:238-250):
- Error Message: Describes the specific problem
- Send Receipt: Alternative option to SMS the receipt instead of printing
- Dismiss: Closes the error dialog
Transaction Action Buttons
On the Transaction Details screen, action buttons appear based on transaction type:- REFUND: For approved purchase transactions
- REPRINT: For all transactions (default action)
- Pre-Auth Complete: For successful pre-authorization transactions
- Pre-Auth Refund: For pre-authorizations that need cancellation
viewModel.selectedAction which is set when navigating to the transaction details.
Failed Transaction Refunds
If a customer insists a declined transaction was charged:- Show them the transaction details with decline code
- Advise them to check their bank statement
- If their bank shows a debit, it’s likely a pending authorization that will be reversed automatically
- Contact your payment processor support if issue persists
Best Practices
Verify Before Refunding
Always verify the customer’s reason for refund and check your refund policy before processing.
Print Both Copies
For refunds, print both customer and merchant copies for complete audit trail.
Document Refund Reason
Keep notes on why refunds were processed for accounting and dispute resolution.
Secure Reprint Access
Enable reprint password protection to prevent unauthorized access to transaction history.
Tips and Tricks
Reprint Without Password
Reprint Without Password
If you’ve forgotten the reprint password, you can access reprints via transaction details from the main transaction history (accessed from Dashboard > Transactions > History) without going through the dedicated Reprint menu.
Saving Paper
Saving Paper
Use PDF download and share features instead of printing when customers prefer digital receipts. This saves thermal paper and is more environmentally friendly.
Fast Transaction Lookup
Fast Transaction Lookup
Use the Search tab with the last 4 digits of the card or the transaction amount for quick lookup instead of scrolling through history.
Refund Disputes
Refund Disputes
If a customer disputes that a refund was processed, show them the refund transaction in history with the RRN. They can use this reference with their bank.
Next Steps
Generate Reports
Learn about End-of-Day reports and reconciliation
Process Transactions
Go back to transaction processing guide