Receipt Handling for Refunds and Cancellations

This article explains what happens to an e-receipt when a customer requests a refund after checkout, or when a mis-entered sale is voided. The receipt on the ReceiptRoller side is updated automatically in step with the refund processed on the POS side, but there are a few points to keep in mind operationally.

Basic flow

  • Process the refund or void on the POS — process the refund on the POS side as usual.
  • ReceiptRoller automatically receives the notification — when the refund webhook arrives from the POS, the status of the corresponding transaction is updated on the ReceiptRoller side.
  • Reflected on the customer's receipt — a "Refunded" or "Voided" label is added to the e-receipt the customer already received.
  • Members are notified — for customers eligible for automatic delivery, a refund-complete notification is sent through the original delivery channel (LINE / app / email).

Types of refunds and how they're displayed

  • Full refund — a "Refunded" badge is shown across the whole receipt, and a strikethrough line is added to the total amount.
  • Partial refund — a strikethrough line and a "Refunded" mark are added only to the refunded product line(s). The total amount is updated to the post-refund amount.
  • Transaction void (mis-entry) — the entire transaction becomes "Voided," and the receipt is displayed as if no sale had ever been recorded.

How the receipt appears to customers

  • Receipts received via LINE — the Flex Message itself stays as-is, but customers can check the latest status (post-refund) via the "View receipt" link inside the message.
  • Receipts saved in the app — the latest status is reflected each time the app is opened. The refund badge is shown automatically.
  • Receipts received via email — clicking the link in the email body takes the customer to the latest-status receipt web page.
  • When redisplayed from a QR code — both the terminal QR and the transaction QR always show the receipt's latest status.

Points for staff to keep in mind

  • The refund on the POS is the single source of truth — refunds cannot be processed from the ReceiptRoller admin screen. Always process the refund on the POS side first; ReceiptRoller only reflects the result.
  • Refund webhook delay — depending on network conditions, a delay of a few seconds to a few tens of seconds can occur. If a customer says "it hasn't been refunded yet," wait about 5 minutes and check again.
  • If it isn't reflected — check the audit log to confirm the refund webhook was received. If it wasn't received, resend from the POS side, or manually sync from the transaction history.
  • Additional notification to members — a refund notification is sent automatically to customers eligible for automatic delivery. For non-member customers, notify them individually at the counter or by email.

History and reports

  • Searching refunded transactions — under "Stores" → "Transaction History," use the "Status: Refunded" filter to list only the refunded transactions.
  • Reflection in reports — sales reports total the post-refund amount. The original sale amount can still be referenced separately as "Total Sales."
  • Audit log — receipt of the refund webhook, the status update, and whether the customer notification succeeded are all recorded in the audit log.

Common cases

  • A customer says "my receipt is still the old one" — the body of the LINE / email message itself doesn't change. Guide them to open the latest web page via the link in the message body.
  • Refunding again after a partial refund — partial refunds can be processed multiple times. The receipt is updated each time.
  • The transaction QR is disabled after a refund — for a full refund or transaction void, the unused transaction QR tied to that transaction is automatically disabled. Customers can no longer view the old receipt using a transaction QR they received beforehand.

Related articles

Published: 2026-04-16 Updated: 2026-07-02