Skip to main content

Bill Payment (Tesco Lotus)

Accept cash payments at Lotus's branches in Thailand using a unique barcode generated at checkout.

Discontinued Service

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

RegionCurrencyMin AmountMax AmountAPI Version
ThailandTHB฿20.00฿49,000.002017-11-02

Note: A ฿10 transaction fee was charged to the customer at the payment counter.

How It Worked

Payment Flow:

  1. Customer selected Bill Payment at checkout
  2. Merchant created source and charge
  3. System generated unique barcode
  4. Customer received barcode (email/display)
  5. Customer visited Lotus's store within 24 hours
  6. Customer presented barcode and paid cash
  7. 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

StatusDescription
pendingBarcode generated, awaiting payment
successfulCustomer paid at store
failedPayment error
expired24-hour window expired

Failure Codes

CodeDescription
timeoutCustomer 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

  1. PromptPay - QR code payments via mobile banking (recommended)
  2. TrueMoney - Digital wallet with cash top-up options
  3. 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