Skip to main content

Insights

Accounting: Your Ledger and the Export for Your Accountant

What the Accounting totals count, how refunds and costs are treated, scanned supplier bills and till paid outs, how to export the ledger as a CSV for your accountant, and how to sync sales, refunds, payouts and paid outs to QuickBooks Online or Xero.

Overview

Finance → Accounting shows your store's money for a date range: Revenue, Expenses, Profit and Invoices scanned, a revenue-against-expenses chart, and the Ledger, the list of every money movement BestWebby recorded for your store. Accounting is part of the Scale plan and above. The owner, admins and anyone with the accountant role can open it.

Pick the range with the two dates in the Ledger section. It starts at the last 30 days.

What the totals count

Every ledger entry has a type, and the type decides where it counts:

CategoryLedger typesWhere it counts
RevenuePOS sale, order payment, subscriptionAdds to Revenue
RefundRefundComes off Revenue. Refunds are stored as negative amounts: money going back out
CostNetwork order cost, API cost, Stripe processing fee, supplier bill (scanned), till paid outAdds to Expenses, by size, whatever sign it was stored with
OtherEvery other type, for example till paid ins, chargebacks, gift cards issued and vendor payoutsListed in the ledger and the export, not counted in the totals

So Revenue is what you took after refunds, and Profit is Revenue minus Expenses.

The screen lists the newest 200 entries in the range; the totals always cover the whole range. To see every entry, export it.

Entries left over from the retired payroll screen are not real pay: their amounts were made up. They stay out of the ledger, the totals and the export. When a range has any, the Ledger says how many, and Show them lists them with their amounts struck through.

Test-mode payments

A card payment Stripe took while your Stripe account was in test mode moved no real money, so it is not revenue. An order counts as test mode when every payment that paid it was a Stripe test-mode payment. Its ledger entries (the payment, and any refund, chargeback or fee on that order) are left out of the totals, the ledger list and the export. When a range has any, the top of the Ledger says so, for example "2 test-mode payments not counted".

  • An order paid partly in test mode and partly with real money counts in full, because real money did move.
  • Cash, e-Transfer and orders marked paid by hand are always real money.
  • Payments recorded before BestWebby started noting Stripe's mode count as real.
  • A customer's card payment of one of your invoices is left out when Stripe took it in test mode, and so is a credit note against an invoice paid only that way.
  • Other entries that do not belong to an order, such as scanned supplier bills and till paid outs, count as before.

The same rule applies to the revenue figures on Analytics and the store overview: test-mode orders are left out, and the page says how many. It applies to the money everywhere else too: customer spend and the RFM money score in the CRM, on the Customers list, on each customer's page and in the customer export, segment spend rules, cohort revenue and the VIP group, the Hub briefing and the daily brief, the Intelligence health score, board report and cash-flow forecast, the Digital twin's figures, the funnel's revenue by source and campaign, the sales on AI agent traffic, the lifetime value in a win-back suggestion, the recent sales on Shop health, Benchmarks (yours and the other businesses'), the Québec QST heads-up and franchise royalty statements. Where a figure counts what customers did (orders placed, the last order, a VIP's order count, Orders this month on the Billing page), a test-mode order still counts. The Billing page shows no sales figure.

If a period has more than 30,000 test-mode entries to leave out, a report or export asks you to choose a shorter period instead of counting them.

Scanned supplier bills

On the Invoices tab, drop a supplier's bill or receipt (JPG, PNG, WEBP or PDF, up to 20 MB) or click to choose one. Its vendor, invoice number, date, subtotal, tax and total are read from it, and it goes into the ledger as a Supplier bill: a cost, at its total with tax included, in the currency printed on it (your store currency when none is printed), on the day you scanned it.

  • The file is kept. It is stored privately in your store's own storage, never at a public address. File on the bill's row, on Invoices and beside the bill in the Ledger, downloads it; only people who can open Accounting can, and the file is handed over by BestWebby itself, never as a shareable link. A bill scanned before BestWebby kept the files says No file kept: keep your own copy of those.
  • Correct what was read wrong. Correct on a bill's row opens its vendor, invoice number, date, subtotal, tax, total and currency. Saving changes the bill's ledger entry, so Expenses and Profit follow the new total. What the scan first read is kept, every correction is added to the bill's history with who made it, when and each old and new value, and each one is recorded in Settings → Audit log. Add a reason if you like.
  • A bill that cannot be stored is not booked. If storage cannot take the file, nothing is recorded and you are asked to try again.

Keep your bills for as long as your tax authority asks (in Canada, six years from the end of the tax year they relate to). Deleting your store deletes its files with it, so export what you need first.

Till paid outs

Cash paid out of a till drawer for something (a courier, supplies, milk for the staff room) is an expense. Each paid out goes into the ledger as a Till paid out the moment it is recorded at the till, with the heading the cashier picked under Spent on (supplies, postage and couriers, repairs and maintenance, staff meals and refreshments, fuel and travel, or other) and the reason they gave. It counts in Expenses, in your store currency, on the day the cash left the drawer.

  • A paid in (cash put in that is not a sale, such as change from the bank) is listed in the ledger as a Till paid in, in neither revenue nor expenses.
  • A cash drop only moves cash to the safe and is not in the ledger.
  • Paid outs and paid ins recorded before they reached the ledger are added on their own, within ten minutes, dated when the cash moved and filed under Other.

See Point of sale for recording them at the till.

Exporting the ledger for your accountant

In the Ledger section, set the two dates and click Export CSV. You get ledger-<from>-to-<to>.csv with every entry in the range, not just the 200 on screen, oldest first.

  • The range runs from the start of the first day to the end of the last day, in UTC, and can be up to two years long.
  • Amounts are as recorded. Refunds are negative, so adding up the amount column nets them off. Each amount is given twice: in cents, and in dollars and cents.
  • The category column is the same rule the totals use: revenue, refund, cost or other. Revenue rows plus refund rows give revenue after refunds; cost rows, added by size, give expenses; other rows are in neither.
  • Legacy payroll entries are left out, as they are on screen.
  • Test-mode entries are left out too, the same ones the screen leaves out.
  • Up to 100,000 entries go in one file. If the range holds more, you are told the file is partial and how many entries it has; export a shorter range for the rest.
  • Spreadsheet-safe. A cell that starts with a character a spreadsheet would treat as a formula is written as text. Negative amounts stay numbers.

The columns:

ColumnWhat it holds
dateWhen the entry was recorded, in UTC
typeThe ledger type, for example order_payment, pos_sale, refund, invoice_scanned (a supplier bill) or pos_paid_out
categoryrevenue, refund, cost or other (see above)
amount_centsThe amount in cents; negative for a refund
amountThe same amount in dollars and cents
currencyThe currency of the entry
reference_type, reference_idWhat the entry belongs to, for example an order and its id, a till's cash movement, or a supplier bill's kept file
descriptionThe description shown in the ledger
entry_idThe ledger entry's own id

Only people who can open Accounting can export it, and each export is recorded in Settings → Audit log.

Giving your accounting firm access

On Settings → Team, under Accounting firm access, click Give a firm access and enter the firm's name and your accountant's name and email. Owners and admins can do this. Your accountant gets an invitation by email and joins your store with the Accounting firm role.

What the Accounting firm role can do:

  • Read your orders, reports, invoices, this Accounting page, the ledger export and the audit log.
  • Nothing else: no customer list, no order or customer export (those files list every customer's name and address), no marketing, no products, no settings, and it cannot change anything. Every change it tries is refused, including refunds, marking an order paid and creating an invoice.

An accounting firm with many clients uses one sign-in for all of them and moves between clients with Switch company in the account menu. Each client grants and revokes its own access; a firm sees only the stores that invited it.

The list shows each grant with when it was given, accepted and last used. Revoke ends the access on your accountant's next click, not at their next sign-in. You can give access again later; the earlier grant stays in the list. Each grant, acceptance, revoke and visit (at most one entry every 15 minutes while they work) is recorded in your audit log.

An accounting firm member holds one team seat, like any other member.

Sync to QuickBooks Online or Xero

Finance → Accounting → Ledger sync sends this store's money to your own accounting software, one record at a time and once each: every paid order, every refund, every Stripe payout and every till paid out. Connect one ledger at a time; to switch, disconnect the first.

If a provider shows Not available yet, BestWebby's own connection to it is not set up yet, so it cannot be connected. It appears here when it is ready.

Connecting

Click Connect QuickBooks Online or Connect Xero, sign in on Intuit's or Xero's own page and choose the company (in Xero, the organisation) to connect. BestWebby never sees your password. If you use an authenticator app, you are asked for a code first, because connecting lets BestWebby write to your books. Only the owner, admins and accountants can connect, change or disconnect a ledger, and each of those is recorded in Settings → Audit log.

Xero lets you tick more than one organisation on its page; BestWebby keeps the first one and gives back access to the rest.

Choosing the accounts

After connecting, Where the money goes lists the accounts from your own chart of accounts, with a suggestion for each:

RowWhat goes there
SalesThe goods on each order
Shipping incomeWhat shoppers paid for shipping
DiscountsDiscount codes and promotions, as a negative line
RefundsMoney given back
Tax collectedThe sales tax BestWebby charged, as a line of its own
Gift card liabilityGift cards sold (owed until spent), gift cards spent online or at the till (taken off again), refunds given as store credit (owed again)
Stripe feesThe fees Stripe kept from each payout
Stripe clearingCard payments land here, refunds leave from here, and each payout moves the rest to your bank
Other paymentsCash, Interac e-Transfer and orders you marked paid; often Undeposited Funds (BestWebby is not endorsed by or affiliated with Interac Corp.)
Bank accountWhere Stripe pays out
Till paid outsCash paid out of a till drawer; an expense account. The cash comes out of Other payments

Rows marked (if you use it) can stay empty until a record needs them; that record then waits with a message saying which account to choose. Your ledger's own system tax account (QuickBooks "GST/HST Payable", Xero's GST or VAT account) does not accept direct posts, so choose or create a separate liability account for tax collected. The tax is posted as its own line and is not run through your ledger's tax engine, so file your sales tax from BestWebby's tax report, not your ledger's. A QuickBooks company outside the US also asks for a tax code on every line: pick one that charges no tax, such as Exempt or Out of scope.

Sync from is the first day that is sent. It starts on the day you connected; an earlier day (up to two years back) also sends those older records, so choose a day after anything you already entered by hand. Then click Save and turn sync on. Saving checks every account against your ledger as it is now, and creates what the documents need there: in QuickBooks, a service item per row ("BestWebby Sales" and so on) and a customer called "BestWebby Sales"; in Xero, contacts called "BestWebby Sales", "Stripe" and "BestWebby Till". No shopper's name, email or address is sent to your ledger.

What is posted

BestWebby recordQuickBooks OnlineXero
A paid order (web, POS, or marked paid)A sales receiptA paid invoice
A refundA refund receiptA credit note with its refund
A Stripe payoutA journal entry: the payout into your bank, Stripe's fees to Stripe fees, the total out of Stripe clearingA transfer from Stripe clearing to your bank, and a spend of the fees
A till paid outA journal entry: the amount to Till paid outs, out of Other paymentsA spend money out of Other payments when that is a bank account in Xero; otherwise a manual journal, the amount to Till paid outs and out of Other payments

Each document is numbered BW- and a code from BestWebby (for example BW-S1A2B3C4D5E6F7): S for a sale, R for a refund, P for a payout, E for a till paid out. The order is named in the memo; a paid out's line carries its heading and reason. A Xero manual journal has no reference, so its narration starts with the number.

  • Sent when paid. A sale goes to your ledger when it is paid, as BestWebby's own ledger records it. A second payment on an order (an exchange top-up, say) is posted as its own sale of that amount.
  • A refund that failed and came back is posted as money in, against Refunds.
  • Gift cards. A gift card spent pays out of Gift card liability, so a sale posts only the money that came in. A $100 till sale paid $60 by gift card and $40 in cash is $100 of sales and tax, $60 off Gift card liability, and $40 into Other payments. A refund given as store credit is a new gift card: that part goes to Gift card liability and leaves no account. A refund that takes value back off a gift card the order sold takes it off Gift card liability, not Refunds. A register or return refund recorded before BestWebby noted how much of it was store credit is not posted, with a message to post it by hand.
  • Test-mode payments move no real money. An order paid while your Stripe account was in test mode, and any refund of it, is skipped with a message saying so. An order paid partly in test mode and partly with real money is not posted; post the real part by hand. Payments recorded before BestWebby started noting Stripe's mode count as real.
  • Till paid outs wait, with a message, until you choose a Till paid outs account (in Xero, one with a code). Every paid out from the sync-from day on is sent, including those recorded before paid outs reached the ledger. They are posted in your ledger's home currency only.
  • Payouts are posted once Stripe has finished listing what each one carried; until then the record says it is waiting. Test-mode payouts move no real money and are never posted. A payout carrying more than BestWebby reads from Stripe is not posted, with a message to post it by hand.
  • Not sent: Stripe's fee on each single order (the fees are posted once, with the payout that carried them), your BestWebby subscription, scanned supplier bills (enter those as bills in your ledger, against the supplier), till paid ins (BestWebby does not know which account the cash came from), and the other ledger types.
  • Currencies. Records in your ledger's home currency always go. A record in another currency goes only when your ledger has multi-currency turned on and that currency added; otherwise it is not posted, and its message says what to change. Payouts in a currency other than the home one are posted by hand.

The sync log

The Sync log lists every record with its status:

  • Waiting: due on the next run. Runs happen every ten minutes, and each sends a limited number per ledger so as to stay inside the provider's limits (Xero allows 60 requests a minute).
  • Posted: in your ledger, with its number there.
  • Not posted: with your ledger's own reason. A temporary problem is tried again by itself (after 2, 4, 8 minutes and so on, up to eight tries); anything that needs you, such as an account not chosen or a currency not turned on, waits for Retry. Retry on a row sends that one again; the button above the log sends every one that was not posted.
  • Skipped: there is nothing to post (for example, the order was paid in Stripe test mode, or Stripe later reported the payout as failed).

Nothing is posted twice. Each BestWebby record has one entry per ledger company. Before trying again, BestWebby first looks in your ledger for the document by its number, so a send whose answer was lost is found instead of repeated. If you delete a posted document in your ledger, BestWebby does not send it again.

Disconnecting

Disconnect gives up BestWebby's access at Intuit or Xero and deletes the stored keys, and nothing more is posted. Documents already posted stay in your ledger. Reconnecting the same company later keeps your account choices and posts nothing twice; turn sync on again after checking them. If the provider could not be reached, BestWebby still forgets the keys and tells you to remove BestWebby from the connected apps in QuickBooks or Xero yourself.

If your ledger stops accepting BestWebby's access (you removed the app there, or it was unused for months), the screen shows Needs reconnecting and nothing is posted. Reconnecting the same company keeps your account choices and sync carries on where it stopped. Connecting a different company starts again: new account choices, and sync from that day.

Refunds in the order export

A refund never changes an order's total: it is a ledger entry against the order. The order export (Export on the Orders list) therefore has a last column, refunded_cents, with how much of each order has been refunded, as a positive number of cents. See Orders and shipping.

A card refund that the shopper's bank turned down after it was issued is booked back as a refund reversal: a positive entry beside the refund it cancels. Accounting counts it off your refunds, and refunded_cents leaves it out.