Skip to main content

Accountant's guide to bookkeeping with Understory

Chart of accounts, the month-end journal entries for bookings, gift cards, punch cards, breakage and refunds, and how to reconcile every liability balance back to Understory.

This guide is for accountants and bookkeepers posting Understory data into a ledger. It covers the accounts to set up, the journal entries for a monthly close, and how to reconcile every balance back to Understory.

If you are the business owner and just want the month-end numbers, start with How to close your books each month instead.


Definitions

Guest — your customer: someone who books an experience, buys a gift card, or similar.

Contract liability (also "deferred revenue" or "unearned revenue") — a debt you owe a guest because they have paid for a service you have not yet delivered. It sits on the balance sheet until the experience is delivered, or the gift card is redeemed or expires, at which point it becomes revenue.

Breakage — the portion of gift cards or punch cards that guests never redeem. Under IFRS 15 it is recognised as revenue either as other cards are redeemed (where breakage is reliably estimable), or once the holder's right to redeem has lapsed.


Why prepayments cannot be booked as revenue

An experiences business collects money before it delivers. That brings it under IFRS 15 — Revenue from Contracts with Customers, the standard used across the EU, which governs how revenue from prepaid services must be recognised.

A guest booking an experience and paying at the time of booking is a service paid for in advance. The payment creates a performance obligation, and revenue can only be recognised as that obligation is satisfied — in practice, when the event has taken place.

This is why Understory's reports are anchored on three different dates, and why the same booking appears in different reports in different months.


Chart of accounts

You need the following accounts. Names will differ by system; the roles matter.

Balance sheet

Account

Role

Receivables, Understory Pay

Cash and cash equivalents. Understory Pay is a real bank account — once money lands there, it is yours.

Receivables, Bank account

Your ordinary bank account, for transfers out of Understory Pay.

Payable, Bookings

Contract liability for guest prepayments.

Payable, Gift cards

Contract liability for unredeemed gift cards. Kept separate from bookings because VAT and unredeemed balances are treated differently.

Payable, Punch cards

Contract liability for unused punches. Same reasoning.

VAT payable

Your existing VAT account(s). Where entries below mention a "VAT code" or "VAT contra-account", they mean these.

Profit and loss

Account

Role

Fee, Understory Pay

Transaction fees. Charged by the card issuer, the guest's bank and the payment platform at the moment of the transaction, and not dependent on delivery — a direct cost of taking the payment.

Fee, Understory

The Understory booking fee, if you want to track it separately.

Revenue, services with / without VAT

Your existing revenue accounts, unless you want revenue split by experience.


The reports you will use

All reports come from Marketing → Insights → Reports, download as Excel, and some contain several sheets. The only exception to this, is the Payout reports, which can be found in Settings → Payments → Payout reports.

Report

Sheet

Used for

Bookings

bookings

Prepayments received

Bookings

orderlines

VAT per rate on new bookings

Bookings

bookings-completed

Revenue recognition

Bookings

orderlines-completed

VAT per rate on delivered bookings

VAT reconciliation

vat-summary

Output VAT per rate for a return, refunds netted

VAT reconciliation

vat-details

The same, line by line, for audit

Gift cards

Gift cards sold

Gift cards by expiry

Breakage

Transactions

Refunds, punch card sales, cash

Customer debt

Closing liability balances

Payout reports

Transfers to your bank

Refer to columns by name, not by spreadsheet letter. Columns are added to these reports over time, which shifts every letter after the insertion point. A punch card column added to the Transactions report in June 2026 moved eight of its columns one place to the right. Any procedure written against letters will silently read the wrong column after such a change.


Filing a VAT return

The VAT reconciliation report is the single source for a period's output VAT. It takes any date range, so a quarter works as well as a month.

vat-summary gives one row per source and VAT treatment:

Column

What it is

Source

What the VAT arose on — tickets, tickets-voucher, booking-fee, gift-card, punch-card

VAT Rate / VAT Treatment

The rate, and whether it is standard, zero-rated, exempt or deferred

Sales VAT / Refunds VAT

Output VAT charged, and output VAT returned. Refunds are positive magnitudes

Net VAT

Sales VAT less Refunds VAT — what is payable on that rate

Sum Net VAT across the rows for the period's output VAT.

Anchoring. Sales are counted on the payment date and refunds on the refund date, so every row is a cash event. That is the VAT-on-receipt basis. If your client is on the delivery basis instead, this report is the wrong instrument — use orderlines-completed from the Bookings report and group by VAT Rate.

Scope. Only money that moved through Understory appears, so unpaid bookings and external / integration settlements are absent by construction — the exclusions under Why an entry does not balance do not apply to this report.

Treatments are not interchangeable. zero-rated is a taxable supply at 0%; exempt is outside the scope; deferred is a multi-purpose voucher sale whose rate is not yet knowable and which belongs on no box of the return. They are kept apart deliberately.

vat-details carries the same figures per ticket line and per refund allocation, with booking, receipt and transaction ids, so any summary figure can be traced back.


Month-end journal entries

Five entries, plus transfers, plus a verification step.

1. Prepaid bookings

Guest prepayments received during the period. Use the Bookings report, bookings sheet, set to the period you are closing.

Account

Amount

Dr

Receivables, Understory Pay

Σ Net Payout

Dr

Fee, Understory Pay

Σ Transaction Fee

Dr

Fee, Understory

Σ Understory Fee

Dr

Payable, Gift cards

Σ Gift Card Amount Used

Dr

Payable, Punch cards

Σ Punch Card Amount Used

Cr

Payable, Bookings

Σ Total (VAT Excl)

Cr

VAT payable

Σ VAT Total

If your system supports a VAT code on the journal line, apply it to the Payable, Bookings line instead of posting VAT separately. If you operate with more than one VAT rate, either make one Payable, Bookings line per rate — taking the split from the VAT reconciliation report's tickets rows — or post the VAT line manually.

Punch Card Amount Used only appears when a booking in the period was paid with a punch card. If no row used one, the column is absent entirely.

The debit side sums to Paid Amount. The credit side sums to Total (VAT Incl). See Why an entry does not balance below before hunting for a difference.

2. Gift cards sold

Use the Gift cards report for the period.

Account

Amount

Dr

Receivables, Understory Pay

Σ Net Payout

Dr

Fee, Understory Pay

Σ Transaction Fee

Dr

Fee, Understory

Σ Understory Fee

Cr

Payable, Gift cards

Σ Total (VAT Excl)

Whether VAT is due now depends on the voucher type, and the VAT reconciliation report resolves it. Under the EU VAT Directive a voucher is single-purpose when the VAT due is already known at issue — in practice, when everything in the catalogue carries one VAT treatment. VAT then falls due on the sale. A multi-purpose voucher could be spent at any of several rates, so VAT waits until redemption.

The report derives this from the catalogue and states the result: a gift-card row carrying a rate is single-purpose, so apply that VAT code to the Payable, Gift cards line. A row showing deferred is multi-purpose, so no VAT code here.

The treatment is derived, not recorded. Understory does not yet capture a voucher's VAT treatment at the point of sale, so the report reads the catalogue as it stands when you run it. A client who adds an experience at a new VAT rate flips from single- to multi-purpose, and a period re-run afterwards will not match what you posted at the time. Keep the report you posted from, and confirm the treatment with the client where their catalogue is close to the boundary.

3. Punch cards sold

Punch card sales are not in the Gift cards report. Use the Transactions report and filter type to punchcard.

Account

Amount

Dr

Receivables, Understory Pay

Σ netPayout

Dr

Fee, Understory Pay

Σ paymentFee

Dr

Fee, Understory

Σ holdbarFee

Cr

Payable, Punch cards

Σ paymentTotal

The same voucher reasoning applies, and the report's punch-card rows state the treatment the same way.

4. Bookings completed — recognising revenue

Once the event has taken place, the prepayment is released into revenue. Use the Bookings report, bookings-completed sheet, which contains every booking whose event finished within the period.

Account

Amount

Dr

Payable, Bookings

Σ Total (VAT Excl)

Cr

Revenue, services

Σ Total (VAT Excl)

No VAT line is needed here. VAT was posted when the prepayment was received, so only the VAT-exclusive amount moves from liability into revenue.

If you post to more than one revenue account, split this entry using the orderlines-completed sheet: group Total (Vat Excl) by VAT Rate and create one debit/credit pair per revenue account. If all experiences post to the same account, a single pair on the totals is enough.

5. Expired gift cards — breakage

When a gift card expires unredeemed, the balance can eventually be recognised as breakage revenue. The timing is not always the expiry date, because it depends on how long the holder keeps a right to the money.

  • Denmark — holders of electronic gift cards may claim the residual value in cash for 12 months after the expiry date. Denmark is the only EU country with this rule. Until that window closes the liability has not gone away; it has changed from an obligation to deliver a service into a potential obligation to refund cash. A card expiring in June 2025 is therefore not breakage until June 2026, and a guest claiming cash inside the window is treated as a refund.

  • Sweden — the Swedish Consumer Agency recommends 10-year validity, and shorter periods may be deemed unreasonable. Breakage is rare; recognise it once the validity period actually expires.

  • Norway — where no validity period is set, the issuer may refuse redemption after 3 years. Recognise at expiry, or 3 years after issuance if no expiry was set.

  • Elsewhere — most EU countries have no post-expiry cash-out right, so breakage can be recognised on the expiry date itself.

Use the Gift cards by expiry report. In Denmark, set the range to cards whose expiry date plus 12 months falls in the period you are closing. Elsewhere, use cards whose expiry date falls in the period.

Account

Amount

Dr

Payable, Gift cards

Σ giftcardAmountLeft

Cr

Revenue, services

Σ giftcardAmountLeft

If VAT was remitted when the card was sold (the single-purpose voucher case), that VAT is not reversed on breakage — apply the same VAT code you used at sale so only the net amount reaches revenue. If VAT was deferred to redemption, no VAT arises on breakage, because no service was ever delivered.

6. Refunds

Use the Transactions report and filter type to refund.

Three things to know about refund rows:

  • Amounts are negative. Use absolute values when posting.

  • Fees are not returned to you. paymentFee, holdbarFee and totalFee are all 0 on refund rows. The fees you paid on the original booking stay as expense.

  • The cash returning to the guest is the full transaction amount, in netPayout.

Do not use paymentTotalExVat or paymentVat. paymentVat is never populated. paymentTotalExVat on a refund row contains the gross refund despite its name. Use paymentTotal for the gross.

Because the liability was credited net of VAT at sale, a refund must be debited net of VAT too. Take the split from the VAT reconciliation report rather than deriving it: its Refunds VAT column gives the VAT to reverse per rate, apportioned across the original booking's rates where a booking carried more than one.

Identify what is being refunded from name and eventStart:

Refund of

name

eventStart

A booking

the experience name

populated

A gift card

literally Giftcard

empty

A punch card

the punch card type name

empty

Booking refunds

Account

Amount

Dr

Payable, Bookings

net portion of Σ abs(paymentTotal)

Dr

VAT payable

Refunds VAT for the matching rate

Cr

Receivables, Understory Pay

Σ abs(netPayout)

If the original booking was paid with a gift card or punch card, the refund restores that balance rather than returning cash. Rows where giftCardAmountOff or punchCardAmountOff is non-zero indicate this — credit Payable, Gift cards or Payable, Punch cards for that portion and Receivables, Understory Pay only for the cash part. Keep these as their own journal entry, separate from cash-only refunds.

Gift card and punch card refunds follow the same shape, debiting Payable, Gift cards or Payable, Punch cards instead of Payable, Bookings, and reversing the sale VAT only if a VAT code was applied at sale.

Partially refunded bookings. The Bookings report's Total (VAT Excl) is the gross booking amount, not net of refunds. A booking partially refunded in a later period was already booked in full on the original prepayment entry, and this refund entry correctly reverses only the refunded portion. There is no double-counting.

7. Transfers from Understory Pay

Get the payout report from Settings → Payments → Payout reports. It shows the full transactional record between the last payout and the current one.

Find the bankTransfer type to see the amount paid out. The report states it as a negative number; credit the absolute amount.

Account

Amount

Cr

Receivables, Understory Pay

the transfer amount

Dr

Receivables, Bank account

the transfer amount


Verifying your data

After posting, reconcile your liability accounts against Understory's own records. Download the Customer debt report, dated the last day of the period.

The report is a real-time snapshot of every contract liability Understory is tracking for you: every booking whose experience has not been delivered, every gift card with a balance, and every punch card with punches left. Filter the type column to split it into booking, giftcard and punchcard.

It is a closing balance, not a period movement. Although the report takes a date, that date is only an upper bound — the report has no start date, and includes every outstanding prepayment since the business began. Compare it against the closing balance of your liability accounts, never against the month's movement.

Which column to reconcile against depends on how you posted the liability.

  • If you posted the liability net of VAT, as the entries above do, compare against transactionTotalVatExclusiveAmount.

  • If you posted it gross, compare against value.

value is the more reliable figure. It is built from the sum of captured transactions minus completed refunds as at your chosen date, and does not change retrospectively. The transactionTotal… columns are derived from the order's stored totals, which the system rewrites when an order is refunded — so a historical snapshot taken after a later refund can differ from what those columns showed at the time. If your two figures disagree and refunds occurred after the period end, this is the likely cause.

If the balances do not match, the usual causes are:

  • A booking has been completed but the Bookings completed entry has not been posted

  • A gift card has expired but the Expired gift cards entry has not been posted

  • A refund has been processed but the Refunds entry has not been posted

  • A new booking or gift card sale has come in since the period closed — the report is real-time, so it reflects everything outstanding today, not as of your period end

To avoid the last one, download the report on the morning after the period closes, before new sales arrive. Alternatively, if your period is the calendar month, filter on dueDate to exclude bookings whose events fall after the period you are reconciling.


Why an entry does not balance

The prepayment entry balances only when Paid Amount equals Total (VAT Incl) across the sheet. Several ordinary situations break that, and none of them are errors:

  1. Bookings with no payment. An empty Gateways column and Receipt ID of - mean nobody paid. The row still carries a full Total (VAT Incl). Exclude them — there is no prepayment to record.

  2. Bookings paid outside Understory. Gateways shows external or integration — a reseller or OTA booking, or one marked paid by other means. The cash never passed through Understory. Exclude them and post from the reseller's own paperwork.

  3. Cancelled bookings. The bookings sheet includes rows with Booking Status of cancelled. Check whether they were refunded before counting them. The bookings-completed sheet already excludes them.

  4. Booking fees passed on to guests. If the client passes the Understory booking fee to the guest, Paid Amount includes that fee but no column in the Bookings report shows it. The equivalent figures are passOnBookingFee in the Transactions report and the booking-fee rows in the VAT reconciliation report.

  5. Partial refunds already applied. For some bookings the Total columns already show the post-refund value while Paid Amount does not.

None of these apply to the VAT reconciliation report, which counts only cash events and so never includes an unpaid or externally settled booking.


Known limitations

Worth knowing before you rely on a figure:

  • VAT comes from the VAT reconciliation report, not the Transactions report. paymentVat is never populated there and paymentTotalExVat is unreliable.

  • The VAT report covers the receipt basis only. There is no delivery-basis equivalent yet; use orderlines-completed for that.

  • A voucher's VAT treatment is derived, not recorded. It is read from the catalogue at the time you run the report, so it can change as the catalogue changes. See the note under entry 2.

  • The Revenue summary report does not include punch cards, so it will not reconcile against Customer debt for a business that sells them.

  • There is no punch cards expiry report. Expired punch cards drop out of the Customer debt report, so breakage on them has to be inferred from the change in balance between two periods.

  • Recognised revenue can change retrospectively. A refund against an already-delivered event reduces that event's month when the Revenue summary is regenerated. Keep the file you closed from.

  • The "Bookings by event date" report does not filter by event date — it returns the same rows as the Bookings report in a different order. Use the bookings-completed sheet for event-dated data.


Did this answer your question? If not, please reach out to us in the chat window at the bottom to the right, and we'll be happy to help 🤗

Did this answer your question?