XPAY Merchant — Driver's Guide
This guide is for taxi and cab drivers (and other merchant operators) who use the XPAY Merchant app to accept card payments from passengers. It covers everything from first sign-in to handling refunds, written in plain, step-by-step language.
You will need: a merchant account provided by your company admin, and the XPAY Merchant app installed on your phone.
- Android: Download on Google Play
- iPhone: Download on the App Store
1. Getting started
Signing in


When you open the app for the first time, you will see the sign-in screen. You need three pieces of information — your company admin should have given these to you:
- Merchant ID — the short name for your company (e.g.
vinasun,mailinh). - Username — your personal login name.
- Password — your login password.
Fill in all three fields and tap Sign in.
If you see an error after tapping Sign in, double-check your Merchant ID and username — they are case-sensitive. If you still cannot sign in, contact your company admin.
The default language follows your device's language setting. You can tap the language button in the top-right corner to switch between English and Tiếng Việt. You can also change this later in your profile settings.
Verify your driver information


Your driver information (phone, vehicle, plate number, license) is pre-filled by your company admin when they create your account. After your first sign-in, go to the Profile tab (bottom navigation) to double-check that everything is correct.
If anything needs updating:
- Tap the pencil icon next to "Driver Information".
- Review and update the fields:
- Phone number — your contact number.
- Default vehicle — your car model (e.g. "Toyota Vios").
- License plate — your vehicle plate number (e.g. "51A-123.45").
- Driver license number — your driving license ID.
- Tap Save.
Your license plate is automatically filled into every new payment you create. Make sure it is correct so you do not have to fix it on every trip.
2. Taking a payment
This is the action you will use most — collecting payment from a passenger at the end of a trip.
Step 1 — Enter the trip charges



- From the Home screen, tap the Create transaction card.
- Enter the fare — the main meter amount.
- If there is an extra charge (tolls, airport surcharge, waiting fee, etc.), enter it in the sub-fee field. The app adds both together automatically.
- Fill in the trip details:
- Reference — your trip or booking number (required).
- Pick-up location — where you picked up the passenger.
- Destination — where you dropped them off.
- Plate number — pre-filled from your profile. Change it only if you are driving a different vehicle today.
Step 2 — Read the card
Tap the Charge button at the bottom. The app will ask you how to read the passenger's card. There are three options:



| Method | When to use | What to do |
|---|---|---|
| Tap (NFC) | The passenger has a physical card and you are using an Android phone with NFC | Hold the card flat against the back of your phone for 2–3 seconds until the app finishes scanning |
| Scan (QR) | The passenger shows a QR code on their phone | Point your camera at the QR code; it reads automatically |
| Enter manually | NFC is not available or the QR code will not scan | Type the 16-digit number printed on the card |
- Tap (NFC) is currently only supported on Android devices. If you are using an iPhone, use Scan or Enter manually instead.
- If your Android phone does not have NFC or NFC is turned off, the app will tell you. Go to your phone's Settings and enable NFC, then try again.
Step 3 — Customer confirms
After the card is read, the passenger must confirm the payment on their end. Depending on the card settings, they will either:
- Receive an SMS code (OTP) and enter it on your screen, or
- Enter their PIN code (a fixed secret code assigned to their card).


Do not close the app or go back while waiting for the passenger to enter their code — the payment may be cancelled.
Step 4 — Done

When the payment succeeds, you will see a confirmation screen showing the amount, date, time, and a booking reference. The trip is complete — you can show this screen to the passenger as a receipt.
If the payment is declined, the app will show an error message explaining why (for example: insufficient balance, card frozen, or wrong verification code). See Troubleshooting for common reasons.
3. Customer verification
During a payment, after the card is read, the passenger must verify their identity. This section explains what happens on your screen.
OTP (one-time code via SMS)

- The app shows a code entry screen with a countdown timer.
- The passenger receives a 6-digit code by SMS on their phone.
- They tell you the code (or enter it themselves on your screen).
- The app checks the code and either approves or declines.
If the code is wrong, the passenger can try again. If the timer runs out, tap Resend code to send a new one.
PIN (fixed secret code)


- The app shows a PIN entry screen.
- The passenger enters their secret code (the one assigned to their card).
- The app checks it and either approves or declines.
Both OTP and PIN have a limited number of tries. If the passenger enters the wrong code too many times, the card will be locked and the payment will be declined. The passenger must contact their manager or administrator to unlock the card before they can pay again.
Abandoned verification
If you need to leave the verification screen before the passenger has entered their code:
- The app will ask: "Are you sure you want to leave?"
- If you leave, the payment stays in Pending status. You can continue it later from the transaction history (see Viewing your transactions).
4. Viewing your transactions
Tap the Transactions tab in the bottom navigation to see all your past payments.
The transaction list

Each card shows:
- Pick-up and drop-off locations (for taxi transactions), or the reference number if locations are not available.
- A status tag (color-coded).
- The amount and currency.
- The date and time of the payment.
Filtering
Use the filter bar at the top to narrow the list:
- Tap a status chip (All, Approved, Pending, Declined, etc.) to show only that type.
- Tap the filter icon to open advanced filters — you can choose a date range and/or a status.
- Clear filters by tapping the "×" next to an active filter, or "Clear all".


Payment statuses
| Status | Color | What it means |
|---|---|---|
| Pending | Amber | Waiting for the passenger to finish verification — you can continue this |
| Approved | Green | Payment succeeded — money was taken from the passenger's card |
| Success | Green | Payment completed and settled to the company account |
| Partial payment | Amber | Only part of the payment was captured (the rest is unprocessed) |
| Declined | Red | Payment was rejected (wrong code, insufficient balance, card frozen, etc.) |
| Voided | Grey | Payment was cancelled before it was settled |
| Expired | Grey | Payment timed out and is no longer valid |
Opening a transaction



Tap any transaction card to see its full details — trip information, fare breakdown, and refund history.
If a payment is still Pending, this means the passenger has not yet entered the verification code and the session is still within the allowed time. You will see a "Continue payment" button. Tap it to continue the payment verification.
Declined transactions show the specific reason why the payment was rejected:



Refund status is not shown on the transaction list. To see refund details, tap a transaction to open its details page — the refund history is at the bottom.
5. Refunding a payment
Sometimes you need to give money back to a passenger — for example, you charged the wrong amount, or the passenger disputes the fare.
Each payment can only be refunded once, and a refund cannot be undone. Once you confirm, the money goes back to the passenger's card immediately. Double-check the amount before confirming.
How to refund


- Open the transaction you want to refund (from the Transactions tab).
- Tap the Refund button at the bottom of the screen.
- Enter the refund amount:
- For a full refund, enter the total amount.
- For a partial refund (e.g. you overcharged by 20,000), enter only the amount to return.
- Optionally enter a reason (e.g. "Overcharged" or "Wrong amount").
- Tap Next — the app shows a confirmation screen with a summary:
- Original amount
- Refund amount
- Remaining amount (what the passenger still pays)
- Trip details (pick-up, destination, plate number, date)
- Review the summary. If something is wrong, tap Back to edit.
- Tap Confirm refund.
After the refund succeeds, you will see a refund confirmation screen. The transaction details page will now show a refund history section at the bottom.


Refund rules
- You can only refund a payment that has been captured (completed).
- Each payment can only be refunded once — make sure to enter the correct amount the first time.
- The refund amount cannot exceed the captured amount.
- If the amount is too large, the app will show an error message.
6. Your profile & settings
Tap the Profile tab to manage your account.

Driver information
Your driver details (phone, vehicle, plate number, license) appear at the top. Tap the pencil icon to update them.
When you update your license plate here, all future payments will automatically use the new plate number — no need to type it again. If the plate number field is missing (shows an orange "Missing" badge), you will have to enter it manually every time you create a payment.
Changing your password

- In the Profile tab, tap Change password under the Account section.
- Enter your current password.
- Enter your new password and confirm it.
- Tap Save.
If you forget your password, contact your company admin — they can reset it for you from the corporate portal.
Changing the language

- In the Profile tab, tap Language under the Preferences section.
- Choose English or Tiếng Việt.
- The app switches immediately.
Signing out
Tap the Sign out button at the bottom of the Profile screen. The app will ask you to confirm before signing out.
7. Troubleshooting
"No internet connection"


A banner appears at the top of the screen when your phone loses its data connection. You cannot create payments or load transactions while offline.
What to do: Check your mobile data or Wi-Fi, then retry your previous action.
"Session expired — please sign in again"

Your login session has timed out (this happens after a long period of inactivity).
What to do: The app will take you to the sign-in screen. Sign in again with your credentials. Any payment that was in progress is not lost — completed payments are already recorded, and pending ones can be resumed after you sign in.
"NFC not supported on this device"

Your phone does not support NFC.
What to do: Use Scan (QR) or Enter manually instead.
"NFC not enabled"

Your phone has NFC but it is currently turned off.
What to do: Tap "Open Settings" on the dialog to go to your phone's NFC settings and enable it, then try again.
"Payment declined"


The payment was rejected. Common reasons:
| No. | Reason | What it means | What to do |
|---|---|---|---|
| 1 | Insufficient balance | The passenger's card does not have enough money | Ask them to top up, use a different card, or accept a different payment method |
| 2 | Card inactive | The card has been issued but not yet activated | The passenger needs to contact their manager or administrator to activate it |
| 3 | Card frozen / blocked | The card has been temporarily blocked | The passenger needs to contact their manager or administrator to resolve this issue with their card |
| 4 | Card expired | The card is past its expiry date | The passenger needs to contact their manager or administrator for a new card |
| 5 | Per-transaction limit exceeded | The amount exceeds the per-transaction spending limit | Split the amount, or ask the passenger to contact their manager or administrator to raise the limit |
| 6 | Daily limit exceeded | The passenger has spent their daily limit | Ask them to pay another way or use a different card |
| 7 | Monthly limit exceeded | The passenger has spent their monthly limit | Ask them to pay another way or use a different card |
| 8 | Too many wrong attempts | The card was locked after too many wrong OTP/PIN entries | The passenger must contact their manager or administrator to unlock the card |
| 9 | Wrong verification code | The OTP or PIN was entered incorrectly | Try the payment again — the passenger will get a new code |
| 10 | Verification expired | The verification session timed out | Start a new payment from the beginning |
| 11 | Service error | Something went wrong on our end | Wait a moment and try again. If it keeps failing, contact support |
"App update available"


A new version of the app is available. There are two cases:
- Required update: The app will not let you continue until you update. This usually happens when there are important security or payment changes. You must update to continue using the app.
- Optional update: The app shows a "Later" button — you can skip and keep using the current version. However, it is recommended to update soon for the best experience.
How to update: Tap the update button — the app will open the App Store or Google Play for you to install the new version. This usually takes less than a minute.
Quick reference
| I want to... | Go to... |
|---|---|
| Collect a payment | Home → Create transaction |
| See my past payments | Transactions tab |
| Refund a passenger | Transactions → tap the payment → Refund |
| Continue a pending payment | Transactions → tap the pending payment → Continue payment |
| Update my plate number | Profile → Driver Information → pencil icon |
| Change my password | Profile → Account → Change password |
| Switch language | Profile → Preferences → Language |
| Sign out | Profile → Sign out |
Related
- XPAY Merchant — App Store Metadata — store listing text for Google Play and Apple App Store.
- Card Payment System — the underlying card lifecycle, activation, and verification model.
- Payment System Overview — the two-layer model behind card balance and company wallet.
- XPAY Merchant — Testing Data — test cards, accounts, and access links for staging and production environments.