Store Builder

"POS — e-invoices and delivery apps"

"Record your seller details and collect VAT invoice requests from the counter in one queue. No provider is connected yet, so no invoice is actually issued."

Manage → Apps → POS → Integrations. This tab of the POS app has two parts: E-invoicing and Delivery apps.

"Collect VAT invoice requests from the counter and queue them for issuing. Nothing is issued until an e-invoice provider is connected."

Know this first: no invoice is issued yet

This screen is groundwork, not a working connection. Viettel S-Invoice, MISA meInvoice and VNPT Invoice are all listed under Providers, and every card says:

"Not connectable yet. A partner sandbox or account is needed first."

Connecting an e-invoice provider needs a test environment (a sandbox) that the provider itself issues to partners, and the platform does not have one from any of them yet. Without testing, nobody can vouch that an invoice it issues is correct, so the Select button on every card is disabled and the screen asks for no account or API key.

The result: every request in the queue ends up Failed, with the reason

"No e-invoice provider is connected, so no invoice was issued. Issue it on your provider's portal for now."

If your shop must issue invoices, keep issuing them on your current provider's own portal. What the queue here gives you is a list of which sales a customer asked for an invoice on, with the buyer's details, so none slips through. Once a provider can be connected, the failed requests can be Retried from this same queue.

Seller details

Entered once for the whole shop: Tax code, Company name, Address, Invoice template no., Invoice series, plus an optional email and phone. Enable e-invoicing needs the five required fields to be valid. You can enable it with no provider selected; that is how the queue starts collecting requests.

The three formats the screen checks:

Field Valid Example
Tax code 10 digits, 10 digits plus - and 3 digits (a branch), or 12 digits 0312345678, 0312345678-001, 079123456789
Invoice template no. One digit from 1 to 6 1 is a VAT invoice, 2 a sales invoice
Invoice series C or K, two year digits, three capital letters C25TAA; invoices from a cash register are usually C25MAA

A 12-digit tax code is a personal identification number, used as the tax code of a household business. The series is upper-cased for you. Each business chooses its own last three letters, so the screen checks the shape, not the meaning: copy the series exactly as registered with the tax authority.

When a sale creates an invoice request

When to create an invoice request has two options:

  • Only when the cashier enters VAT buyer details (the default). At checkout the counter shows an Issue a VAT invoice switch; the cashier turns it on and enters the buyer's tax code (optional), company or buyer name, address and email. With a tax code, company name and address are required.
  • For every sale. Every counter sale creates a request, including those with no buyer entered (an invoice to a walk-in customer).

The Issue a VAT invoice switch shows only while e-invoicing is enabled, and is hidden while the counter is offline (see POS — selling when the network drops). In "For every sale" mode, an offline sale still creates its request when it syncs.

Each sale gets at most one request, however many times it is resent. The request's content (lines, tax, totals) is captured at the time of sale, so editing a product later does not rewrite an old sale's invoice. Your seller details, on the other hand, are read when the invoice is issued.

A sale never fails because of the invoice. If the request cannot be saved, for example because the buyer's tax code is invalid, the sale still completes and the counter shows Invoice request not saved. The sale is done; the request is not, so that sale's invoice is yours to issue by hand.

The invoice queue

Each row is one sale: order number, buyer, state (Waiting, Issuing, Issued, Failed, Cancelled), the latest error and the invoice number once there is one. Filter by state at the top.

  • Retry works only on a Failed request. Today it only means something after a provider is connected: retried with no provider, the request goes back to Failed for the same reason.
  • Cancel request works on a Waiting or Failed request and requires a reason. The row is not deleted; the reason is kept with it.

Voiding a sale at the counter cancels that sale's unissued request, with the reason "Đơn đã huỷ" (sale voided). An invoice that has been issued (or is being issued) is not cancelled along with it: the counter shows Sale voided, invoice not cancelled, and you have to cancel that invoice deliberately from this queue. An issued invoice is a tax document, so cancelling it has to be somebody's decision. Since nothing is issued yet, this cannot happen until a provider is connected.

Returns do not create an adjustment invoice yet. Changing anything on this tab needs the POS manage permission; someone with view access sees the screen read-only.

Delivery apps

GrabFood and ShopeeFood appear as two cards reading:

"Not connectable yet. A partner account is needed first."

Receiving their orders needs a partner account issued by Grab and Shopee themselves, and the platform does not have one. There is nothing to press or configure yet; keep taking GrabFood/ShopeeFood orders in their own apps as you do today.

Updated 09/10/2026