Bill Payment (Tesco Lotus)
Accept cash payments at Lotus's branches in Thailand using a unique barcode generated at checkout.
Important: Bill Payment service has been discontinued as of October 1st, 2024. This documentation is maintained for reference purposes only. Please migrate to alternative payment methods such as PromptPay or Convenience Store (Konbini).
Overview
Bill Payment enabled customers to pay for online purchases in-person at Lotus's (formerly Tesco Lotus) retail branches across Thailand. Merchants generated a unique barcode at checkout, and customers presented this barcode at any Lotus's counter to complete payment with cash.
Key Features:
- ✅ Cash payments - For customers without bank accounts or cards
- ✅ Nationwide coverage - 2,000+ Lotus's branches in Thailand
- ✅ Familiar experience - Same as paying utility bills
- ✅ 24-hour validity - Barcode valid for 24 hours
- ❌ No refunds - Cannot be refunded through Omise
Supported Region
| Region | Currency | Min Amount | Max Amount | API Version |
|---|---|---|---|---|
| Thailand | THB | ฿20.00 | ฿49,000.00 | 2017-11-02 |
Note: A ฿10 transaction fee was charged to the customer at the payment counter.
How It Worked
Payment Flow:
- Customer selected Bill Payment at checkout
- Merchant created source and charge
- System generated unique barcode
- Customer received barcode (email/display)
- Customer visited Lotus's store within 24 hours
- Customer presented barcode and paid cash
- Merchant received webhook notification
Typical completion time: Hours to 24 hours (offline)
Implementation (Historical Reference)
Step 1: Create Source
curl https://api.omise.co/sources \
-u $OMISE_PUBLIC_KEY: \
-d "amount=100000" \
-d "currency=THB" \
-d "type=bill_payment_tesco_lotus"
Step 2: Create Charge
curl https://api.omise.co/charges \
-u $OMISE_SECRET_KEY: \
-d "amount=100000" \
-d "currency=THB" \
-d "source=src_test_xxx"
Barcode Response
The charge response included barcode details in source.references:
{
"object": "charge",
"id": "chrg_test_xxx",
"status": "pending",
"source": {
"type": "bill_payment_tesco_lotus",
"references": {
"barcode": "https://api.omise.co/charges/chrg_test_xxx/documents/docu_test_xxx/downloads/barcode.svg",
"expires_at": "2024-01-02T12:00:00Z",
"reference_number_1": "1234567890",
"reference_number_2": "0987654321",
"omise_tax_id": "0105556091152"
}
}
}
Display Barcode
<div class="bill-payment-barcode">
<h3>ชำระเงินที่ Lotus's</h3>
<img src="{{ barcode_url }}" alt="Barcode">
<div class="reference-numbers">
<p>Ref 1: {{ reference_number_1 }}</p>
<p>Ref 2: {{ reference_number_2 }}</p>
<p>Tax ID: {{ omise_tax_id }}</p>
</div>
<div class="amount">
<strong>฿{{ amount }}</strong>
<small>(+ ฿10 ค่าบริการ)</small>
</div>
<div class="expiry">
<p>หมด อายุ: {{ expires_at }}</p>
</div>
<div class="instructions">
<h4>วิธีชำระเงิน:</h4>
<ol>
<li>ไปที่ Lotus's สาขาใดก็ได้</li>
<li>แสดงบาร์โค้ดนี้ที่เคาน์เตอร์</li>
<li>ชำระเงินสด (+ ค่าบริการ ฿10)</li>
<li>เก็บใบเสร็จไว้เป็นหลักฐาน</li>
</ol>
</div>
</div>
Charge Status Values
| Status | Description |
|---|---|
pending | Barcode generated, awaiting payment |
successful | Customer paid at store |
failed | Payment error |
expired | 24-hour window expired |
Failure Codes
| Code | Description |
|---|---|
timeout | Customer didn't pay within 24 hours |
Refunds & Voids
Bill Payment charges could not be voided or refunded through Omise. Customers had to contact Lotus's customer service directly for refund requests.
Migration Guide
Since Bill Payment has been discontinued, migrate to these alternatives:
For Thailand
- PromptPay - QR code payments via mobile banking (recommended)
- TrueMoney - Digital wallet with cash top-up options
- Credit Cards - Standard card payments
For Cash-Preferring Customers
Consider implementing:
- Cash on Delivery (COD) through your logistics partner
- Bank transfer with manual confirmation
FAQ
Why was Bill Payment discontinued?
Bill Payment (Tesco Lotus) was discontinued as of October 1st, 2024. This was a business decision related to changes in the retail partnership and the evolution of payment preferences in Thailand toward digital payment methods like PromptPay.
What should I use instead?
For Thailand, we recommend:
- PromptPay - Most widely adopted, instant QR payments
- TrueMoney - Popular wallet that supports cash top-up
- Mobile Banking - Direct bank app payments
These methods offer faster confirmation and better customer experience.
What happens to existing Bill Payment charges?
Any Bill Payment charges created before the discontinuation date that were still pending have expired. No new charges can be created with this payment method.
Can customers still get refunds for past payments?
For historical Bill Payment transactions, customers should contact Lotus's customer service directly. Omise cannot process refunds for Bill Payment transactions.
Is there a similar offline cash payment option?
For Japan, Konbini (Convenience Store) payments are available, allowing cash payments at 7-Eleven, FamilyMart, Lawson, and other convenience stores. However, there is no direct equivalent for Thailand at this time.
How can I support unbanked customers?
For customers who prefer cash or don't have bank accounts:
- TrueMoney - Can be topped up with cash at 7-Eleven and other locations
- Cash on Delivery - Implement through your logistics partner
- Bank Counter Deposit - Provide your bank account for direct deposit
Related Resources
- PromptPay - Recommended alternative
- TrueMoney - Digital wallet option
- QR Payments Overview - All QR methods
- Payment Methods Overview - Full payment method list