Payments and deferred revenue

A deposit taken in March is not revenue in March

RingUps records a bridal deposit as deferred revenue: a liability the store owes the bride, not income. The sale is recognized on the day the gown is picked up. Every payment posts to an append-only double-entry ledger, so no row is ever edited in place and the balance on any past date can still be proved.

2,341 payments totalling $2,161,190.44, net of 43 refunds, migrated out of one store's twenty years of history.

A couple photographed at Cande Bridal Boutique in Kelowna, British Columbia
The RingUps Payments screen, showing today's collected total, deposits on payment plans, the deferred revenue balance, and a list of recent payments by bride, type and method
The Payments screen in RingUps. The deferred revenue figure on the tile is the same balance the ledger below is built from, order by order.

What is deferred revenue in a bridal shop?

A bride orders a gown in March and pays sixty percent down. The money is in the bank that afternoon. The gown, however, does not exist yet. It is cut in the designer's factory months later, shipped, checked in, altered and finally handed over in November. Until she walks out with it, the deposit is not something the store has earned. It is money the store owes back in the form of a gown.

Accountants call that a contract liability, or deferred revenue. Owners usually call it the deposit money they are not allowed to spend. Both are describing the same thing: cash on the balance sheet with an obligation attached to it.

It matters for three ordinary, unglamorous reasons.

Your season looks better than it was.
Booking every March deposit as March income makes a slow spring read as a strong one, and pushes profit into the wrong year. Bridal is the industry where that gap is widest, because the delivery is months behind the sale.
A cancellation should not become a restatement.
If the deposit was never income, releasing it is one entry. If it was booked as income in a closed month, someone has to go back and undo a month that has already been reported.
Your accountant asks for the figure anyway.
At year end somebody has to say what the store is holding against undelivered gowns. If the system cannot produce it, that number gets rebuilt by hand from a list of open orders, which is exactly the moment errors enter the books.

RingUps posts the deposit to deferred revenue at the moment it is taken, and recognizes the revenue when the order is marked picked up. There is no month-end journal for a bookkeeper to remember, because recognition is an event in the ledger rather than an adjustment sitting on top of it.

Worked example

A $6,400 gown, a March deposit and a November pickup: what the ledger shows at each point

Follow one order all the way through. Four entries, written in order, none of them ever edited afterwards.

One order through the deferred-revenue ledger. Illustrative figures for a single order, shown before sales tax so the entries stay legible.
Date What happens at the counter Legs posted to the ledger Deferred revenue Revenue recognized
14 Mar She signs the order for a $6,400 gown and pays a sixty percent deposit of $3,840. Cash in $3,840
Deferred revenue $3,840
$3,840 $0
Apr to Oct The gown is placed with the designer, arrives, is checked in and waits on the rail. Nothing. The ledger does not move because the gown moved. $3,840 $0
8 Nov She pays the $2,560 balance at the counter. Cash in $2,560
Deferred revenue $2,560
$6,400 $0
8 Nov The gown leaves with her. Staff mark the order picked up. Deferred revenue released $6,400
Revenue $6,400
$0 $6,400

The March row still reads exactly as it was written in March. Nothing went back and changed it. If the bride cancels in July instead, the March row is not deleted either: staff choose forfeit, refund or store credit, and the outcome is written as a further entry that releases the liability and says which of the three it was.

Append-only

Why a payment row is never updated in place

Append-only means a row is written once and never changed. A payment keyed wrong is not corrected by editing it. It is voided with a reason, and both the original and the void stay on file. RingUps enforces this in the database rather than in the application: payments cannot be deleted and ledger entries cannot be rewritten, so a manager, a support engineer or a stray script cannot change what a row said.

You can prove the balance on any past date

Because entries are only ever added, the deferred-revenue balance on 31 December is the sum of everything posted up to 31 December. It is reconstructed from the ledger, not remembered by it. Ask a system that overwrites rows what it was holding last December and the honest answer is that it can only tell you what it holds now.

Nobody can quietly zero a liability

Where rows can be edited, or filtered out of a report by changing a date range, a liability can shrink with nothing on file to say who shrank it. In an append-only ledger the only way to reduce deferred revenue is to post an entry that reduces it, and that entry carries an author, a timestamp and a reason.

app.ringups.com/orders/3184/ledger
PostedEntryDetailAmount
14 Mar 14:22PaymentDeposit, keyed at the counter$3,480
14 Mar 14:24VoidReason: amount keyed wrong, re-entering$3,480
14 Mar 14:25PaymentDeposit, sixty percent of $6,400$3,840
08 Nov 10:41PaymentBalance at pickup$2,560
08 Nov 10:43RecognitionOrder marked picked up, liability released$6,400

Five rows for one order, and the wrong one is still there. That is the point: an auditor can see the mistake, the correction, who made it and when.

How it works

What staff do, and what RingUps does in response

  1. STEP 1

    She pays a deposit

    Staff: record the amount and the method against the order. RingUps: posts two matching legs and attaches them to that order, not to a day's takings, so the money is always answerable to a gown.

  2. STEP 2

    The gown is ordered and waits

    Staff: place the purchase order and check the gown in when it lands. RingUps: leaves the ledger alone. Receiving stock is not a revenue event, however long the wait has been.

  3. STEP 3

    She collects the gown

    Staff: take the balance and mark the order picked up. RingUps: releases the liability and recognizes the revenue on the pickup date, in one entry that references the order.

  4. STEP 4

    Or the wedding is called off

    Staff: choose forfeit, refund or store credit. RingUps: writes the chosen outcome as its own entry. Nothing is reversed by deletion, and the reports for voids, forfeits and credits on account read from those same rows.

Both halves, in the same breath

Can a store take card payments through RingUps today?

In-app card payments are built and running. A Stripe Checkout Session, a signature-verified webhook, and a recording function that writes the ledger legs when the webhook confirms the money. It shipped on 17 July 2026 and it is in use at the pilot store, Cande Bridal Boutique in Kelowna, British Columbia.

And it cannot be sold to a second store yet. The Stripe client in RingUps is single-org: it throws an error for any organization other than the pilot store. Unlocking it needs Stripe Connect, and Stripe Connect needs a legal entity that does not exist yet. That is a company-formation problem, not an engineering one, and we will say here the day it changes.

Until then a new store keeps the processor and the rate it already has, takes the card on its own terminal, and records the payment against the order in RingUps. The deferred-revenue accounting is identical either way, because the ledger cares about the order and the pickup date rather than about who moved the money.

Where the money can come from
Your own terminal or transfer
Available to any store. Recorded against the order, posted to the ledger.
Card inside RingUps
Wired end to end since 17 July 2026, pilot store only, pending Stripe Connect.
Refund to a card
Written to the ledger by RingUps. The card refund itself is done by hand in the Stripe dashboard.
Card on file
Not built. RingUps does not store a card to charge later, and the row for it in the interface is disabled.
Wedding rings photographed at a Cande Bridal Boutique bride's wedding

Ask an owner to reconcile their current system against itself.

The question that ended the evaluation
Proof

What twenty years of one store's payments looked like on the way in

When Cande Bridal Boutique moved off Bridal Web Solutions, 2,341 payments totalling $2,161,190.44 came across, net of 43 refunds, against 1,391 orders totalling $2,275,597.72. Those are migration figures verified against the production database on 4 August 2026. The store has been trading since, so today's totals are larger, and we do not present one as the other.

$141,807.75
wrong-signed across 93 lines and 59 orders in the old system. Reversals were recorded with both a negative quantity and a negative price, so they read as positive charges. Roughly 78 percent of an apparent $384,659.89 receivable was an artefact.
2,759
payments skipped, because they carried no order number to attach to. Rather than guess which bride they belonged to, they were left out and reported. 228 orders were skipped on the same principle.
$3,253.05
overstatement caught in tax. The sales export carried no tax at all, so all 1,391 orders had it rebuilt, then 36 exception invoices were corrected against a second report from the same system.

We found it, we refused to guess at it, and we told the owner not to collect on it. That is the same discipline the ledger enforces afterwards: an entry is made because something happened, and it stays made.

What this replaces in most shops

The deposit spreadsheet beside the till

A second set of books kept because the first set could not answer the question. It is accurate until the day someone is off sick.

The year-end adjusting entry

An accountant reconstructing deferred revenue by hand from a printed list of open orders, once a year, for a fee, from data nobody can check afterwards.

The person who remembers

Whoever knows which deposits are refundable, which were part-forfeited and which bride was promised something at the counter in a quiet moment.

Questions owners and their accountants ask

How do bridal stores account for deposits?

A deposit is a liability until the gown is handed over, not income on the day it is paid. The store has been paid for something it has not delivered yet. RingUps records the deposit as deferred revenue at the moment it is taken and recognizes the sale as revenue on the pickup date, so the books follow the gown rather than the cash.

Can I take card payments through RingUps today?

Not unless you are the pilot store. In-app card payments are wired end to end with a Stripe Checkout Session, a signature-verified webhook and ledger legs, and they shipped on 17 July 2026 for Cande Bridal Boutique. The Stripe client is single-org and throws an error for any other organization, because opening it up requires Stripe Connect, which requires a legal entity that does not exist yet. Every other store runs its own processor and records the payment in RingUps.

What does an append-only ledger mean, and why should a shop owner care?

It means a ledger row is written once and never updated in place. A mistake is corrected by voiding the row with a reason and posting a new one, so both stay on file. That is what lets RingUps prove what the deferred-revenue balance was on any past date, and it is why nobody can quietly zero a liability: the only way to reduce one is to post an entry that carries an author, a timestamp and a reason.

How do refunds and cancellations work?

Because the deposit was never booked as income, a cancellation releases a liability instead of forcing a restatement. Staff choose the outcome explicitly: forfeit the deposit, refund it, or hold it as store credit. The refund is written to the ledger only. If the original payment was a card, the card refund itself is done by hand in the Stripe dashboard.

Bring your accountant to the demo

They will have three questions about recognition, three about the audit trail, and one about what happens when a bride cancels. We would rather answer them now than after you have switched.