Tillify LogoTillify
Sign inGet started
Back to How To

How to create QR codes

Use this guide when you want a payment QR code customers can scan right away.

Before you start

  • You can sign in to your Tillify dashboard.
  • You have at least one receiving bank account connected.
  • You know if this QR is for one fixed price or variable pricing.

What you will finish with

  • A live QR code linked to your chosen bank account.
  • Optional settings applied (one-off, customer details, tickets, webhook).
  • A ready-to-share code for print, display, or online links.

Exact steps

Menu path: Dashboard → QR Codes → Create. Follow in order.

  1. 1

    Open Dashboard, then click QR Codes in the left menu.

  2. 2

    Click Create QR code.

  3. 3

    In Item or Service name, enter what the customer is paying for (for example: Coffee, Event Entry, Donation).

  4. 4

    In Receiving bank account, choose the account where money should be deposited.

  5. 5

    Choose pricing: turn on Set fixed amount for one exact price, or leave it off for customer-entered amount.

  6. 6

    If using customer-entered amount, set Minimum amount if you want a payment floor.

  7. 7

    Optional: turn on One-off QR code to auto-expire after the first successful payment.

  8. 8

    Optional: turn on Require customer details if you need payer name/email/notes for fulfilment.

  9. 9

    Optional: turn on Ticket mode if this QR sells event tickets.

  10. 10

    Optional: add statement particulars/code/reference and a webhook URL for downstream systems.

  11. 11

    Click Create QR code and wait for the success message.

  12. 12

    Open the QR details page, then choose how to use it: print, show on device, or share link.

Types and use cases

TypeBest use caseSetup note
Fixed amountOne product, one price (coffee, entry fee, set menu)Turn on Set fixed amount and enter the exact amount.
Open amountDonations, honesty box, custom quotingLeave fixed amount off so the customer enters a value.
Open amount + minimumFlexible pricing with a minimum floorLeave fixed amount off and set Minimum amount.
One-off codeSingle customer invoice-style paymentEnable One-off QR code (expires after one successful payment).
Require customer detailsYou need email/notes for fulfilmentEnable Require customer details.
Ticket modeEvents and paid entryEnable Ticket mode, then add ticket items on the QR detail page.
Webhook-enabledSend payment success to another systemExpand Webhook notification and add your endpoint URL. See Webhook payload below.

Webhook payload

When a customer completes a payment on a QR code with a webhook URL, Tillify sends a POST request to that URL with a JSON body like this:

{
  "event": "payment.completed",
  "data": {
    "id": "8f0c2a4e-…",
    "checkout_session_id": null,
    "external_order_id": null,
    "qr_code_id": "3b9d71c2-…",
    "status": "completed",
    "amount": 11.39,
    "currency": "NZD",
    "completed_at": "2026-10-14T01:23:45.678Z",
    "customer_reference": "Sam Smith",
    "metadata": {
      "product_name": "Coffee cart",
      "description": "Flat whites and long blacks",
      "items": [
        { "id": "c41e…", "name": "Flat white", "price": 5.5, "quantity": 2 }
      ],
      "customer_email": "sam@example.com",
      "customer_notes": "Oat milk please"
    }
  },
  "created_at": "2026-10-14T01:23:46.012Z"
}
event
Always payment.completed for a QR code.
data.id
The payment's ID. Use it to ignore a repeated request.
data.qr_code_id
The QR code that was paid.
data.amount
What the customer paid, in dollars (not cents), including any fee you pass on to the customer.
data.currency
Always NZD.
data.completed_at
When the payment completed (UTC, ISO 8601).
data.customer_reference
The reference the customer typed when paying. Empty if they left it blank.
data.metadata.product_name
The QR code's item or service name.
data.metadata.description
The QR code's description, if it has one.
data.metadata.items
For QR codes with items: what was bought, with each item's unit price in dollars and quantity.
data.metadata.customer_email
The customer's email, if they gave one.
data.metadata.customer_notes
The customer's notes, if they left any.
data.metadata.invoice_number
The invoice number, when the QR code is an invoice's payment link.
checkout_session_id, external_order_id
Always null for QR code payments. They're used by API payments.

metadata may contain other keys. Don't rely on any that aren't listed here.

Answer with any 2xx status within 10 seconds. Otherwise we send the same body again after 1 minute, 5 minutes, 30 minutes, 2 hours, 6 hours and 24 hours, then stop. You may occasionally get the same payment twice, so handle each data.id only once.

Only payment.completed is sent to a QR code's webhook. Nothing is sent for failed, cancelled or refunded payments.

QR code webhooks aren't signed, so anyone who knows your URL could send a request that looks like a payment. Keep the URL private, and check your Tillify dashboard before you hand over anything valuable. If you need webhooks you can verify, create API credentials under Dashboard → Ecommerce: their webhooks are signed.

Jump to another guide

Create QR CodesSet Up TicketsSet Up Staff AccessRun POS PaymentsConnect Your TillCreate Invoices
Next: Set Up Tickets
Tillify LogoTillify

QR code, card and bank payments for New Zealanders.

Features

  • Delegates
  • Tickets
  • Till
  • QR Codes
  • E-commerce

Who it's for

  • Schools & Fundraisers
  • Clubs & Community
  • Market Stalls
  • Honesty Boxes
  • Food Trucks
  • Tradies
  • Marketplace Sellers

Product

  • Pricing
  • How It Works
  • Calculator

Help

  • FAQ
  • Customer Guide
  • Contact Us
  • Guides
  • Blog
  • About Us

Legal

  • Website Terms
  • Merchant Terms
  • Customer Terms
  • Privacy Policy

Powered by

Akahu

Pay by Bank payments run through Akahu, New Zealand's open banking platform.

© 2026 Tillify. All rights reserved.

Made in New Zealand