Skip to content

Accounting

Artconomy's system has a fully functional double-entry bookkeeping ledger. Every transaction can be seen as a debit from one account as well as a credit to another.

We have built and retained our own ledger system for two reasons:

  1. The nature of the escrow-style transactions we process is not fully supported by our payment processors.
  2. Our commitments to artistic freedom mean that we always must be prepared to migrate. If we don't have a solid understanding of the history of transactions, we cannot fix issues caused by a forcible transition. Most payment processors assume you will use their ledgers exclusively when handling payments.

The result is that we have a separate ledger that both mirrors and augments what we see on Stripe. However, this also introduces the chance for error. Bugs, unexpected fees from the processor, or any number of other surprises can affect the synchronicity of the two systems. For this reason, Artconomy must balance its ledger like one balances (or once balanced) a checkbook of yore.

Reconciliation

Reconciliation is done at the beginning of each month, but can be done more often if there are a large amount of transactions to process or if there is a need for more current information. It is performed in two phases: reconciling the bank and company cards, and then reconciling the escrow liabilities.

These instructions assume that the reconciliation is taking place at the beginning of a new month, to wrap up the transactions of the previous month.

Reconciling the accounts

In Quickbooks Online, check the bank accounts panel. There will be one for each of the bank or credit accounts we have. Quickbooks will have automatically imported transactions, but they will need categorization. If you're unsure of the required categories, check previous transactions to see how we categorized them before. Add memos for anything novel. If you're unsure of any transaction's purpose, check with the founder.

By the time you've finished, you should have a posted balance that matches the balance in the account on the bank's website. Go all the way through to the current day. The balance should match the current balance. If it doesn't, you've made a mistake. Go back and find any entries you've missed or misentered and correct them.

When you are finished, the account should have a checkmark next to it.

Generating the Reports

To generate the Journal Report (the critical one for this process):

  1. Open the sidebar on Artconomy.
  2. Find the Reports heading and select beneath it Financial.
  3. Select the date range. The end of the range is non-inclusive, so if you wanted all transactions in January, you'd pick a starting date of January 1st and an ending date of February 1st. The report's timestamps are in UTC.
  4. Under "Journal Report", select "Download XLSX". This will download an Excel-compatible workbook that contains all the information needed to complete reconciliation. Save a copy of the report on the company shared drive1 in Books->Current Year->Current Day. See the existing directories for the format of Current Year and Current Day.

Now, open the report. If you are using LibreOffice or similar, you may need to force a hard-calculation run for all the formulas to display their correct results. To do this in LibreOffice:

  1. Select Data in the toolbar.
  2. Select the Calculate submenu.
  3. Select "Recalculate Hard".

You are additionally encouraged to download and save the other reports on the page. However, they are only useful for diagnosis when something is wrong in the Journal Report, and shouldn't be required for reconciliation, and so aren't required if there are no issues.

Grabbing the Stripe Reports

Warning

All reports MUST be handled in UTC. When exporting from Stripe, or pulling up their reports, always verify they are set to UTC.

Under Shortcuts in the sidebar, select Reports. Then, select Balance Summary. Change the timezone to UTC. In Stripe's reporting interface, dates are inclusive. So to get all of January, select a start date of January 1st and an end date of January 31st.

You probably won't have to set the dates in reality, as they default to the last month.

Once generated, refer to this report when going over the next sections.

Matching the Reports

These fields in the Stripe report should match exactly with Artconomy's Journal Report under the corresponding field:

Stripe Artconomy
Charges (Gross) Revenue Sheet, Price column total
Charges (Fees) Revenue Sheet, card_fees column total
Refunds Revenue Sheet, refunded column total
Transfers (Gross Amount) Expenses sheet, the total of the amount and vendor fees columns together

If there is a mismatch, there is a bug or other error which needs to be tracked down.

Preparing the Reconciliation Template

Note

Automation to autopopulate the reconciliation template is planned.

Now that we've verified we have all the data we need and that it matches Stripe's data, we need to use the reconciliation template to run through all the needed variables.

In the reconciliation template, we need to populate the variables with their corresponding values in the Journal Report or Stripe Report:

Reconciliation Stripe Journal
Stripe Starting Balance Starting Balance
Receipts from Customers Charges (Gross) Revenue sheet, price column total
Top-ups Top-ups (Gross) Revenue sheet, top_up column total
Credit Card Fees Charges (Fees) Revenue sheet, card_fees column total
Stripe Fees Additional Stripe Fees (total all values here) Expense sheet, processor fees column total
Refunds Refunds (Gross) Revenue sheet, refunded column total
Artist Payments Expenses sheet, amount column total
Marketing fees Expenses sheet, vendor fees column total
Payouts Payouts
Holdings Beginning Balance (previous report month) Balances sheet, total of escrow and holdings columns
Artconomy fees Revenue sheet, our_fees column total
Subscriptions Revenue sheet, subscriptions column total
Refunds Revenue sheet, refund column total
Transfer reversals Not yet supported, if this happens again we need to add it

After filling in these values, the Stripe Ending Balance in the reconciliation worksheet should equal the ending balance on the Stripe report. If not, there's an error somewhere. Check the signs as well.

The Ending Balance should then match the Escrow column on the Balances sheet of the Journal Report plus the Holdings column. Holdings should hopefully be zero, but may have some amount in it if we're not able to transfer to a user's Stripe account for some reason.

Making the Journal Entries

Now that we have all the values, we will make a journal entry. A journal entry is a balanced set of transactions in Quickbooks that indicates how money has moved between different accounts as a unit. In order for a journal entry to be valid, all values in the credits and debits must total to the same amount, in the principles of double-entry bookkeeping.3

The first section

  1. In the search bar, search for 'Create Journal Entry'
  2. Select the month-ending date.
  3. In the reconciliation sheet, above the heading which says Escrow, for every number that has a value in the 'Journal Account' column:
  4. Use the Journal Account value to pick the value of the 'Account.'
  5. Enter the value in the credit column if it is positive, and in the debit column if the value is negative.
    • Note: Quickbooks will autopopulate one of the columns with the current difference. Be sure to clear that out and put in the correct number.
  6. Use the first column as the value of the description field

After you've done this, the values between Debits and Credits should differ. Now:

  1. Create a new line.
  2. Set the account to 'Stripe Credit Card Service.'
  3. Quickbooks will automatically populate the remaining difference.
  4. This remaining difference should match the 'Stripe Balance Change' on the reconciliation report.
  5. If it does not, you've made a mistake. Check the entries.
  6. Set the memo to 'Stripe Balance Change'

If the value in 'Stripe Balance Change' is positive, the Journal Report will have populated the value in the 'Credits' column. If it is negative, it will populate the 'Debits' column. If this is not the case, you have entered the transactions backwards-- with the credits and the debits flipped.

The second section

Now, go back to the reconciliation, and:

  1. Find the lines under Income that have values in the 'Journal Account' columns.
  2. Enter the values like you did in the first section-- placing them in the debit column if negative, and the credit column if positive.

Once you finish, save, and then go to All Apps->Accounting->Chart of Accounts->Escrow Liabilities. Verify that the balance matches the value in the 'Holdings Ending Balance' field, and that this value matches the total between the 'holdings' and 'amount' columns on the Journal Report.

Final steps

The last value on the reconciliation is labeled Current Cushion. This is the difference between the current Stripe Balance and the total amount held in Escrow for others. This should preferably be positive, but it may be negative. This might happen if services we pay for using Stripe were larger than the revenue taken in this month, or if we ran a virtual table event and have cash to deposit from in-person transactions.

If this happens, initiate a top-up in the amount shown to pull the difference from our bank account. It should be possible for all clients to finalize their transactions at once, however improbable that may be. We are not in the business of keeping fractional reserves beyond this brief moment between calculation and top-up.


  1. If you do not have access to the company shared drive, contact the founder for access. 

  2. Quickbooks is not open source software. We use it because our accountant is familiar with it and started us there. We will need to perform discovery to eventually move off of it and onto open source software in the future. 

  3. Quickbooks' implementation of double-entry bookkeeping is more flexible than our own. Artconomy's implementation requires every transaction to be an amount precisely debited from one account and credited to another in full. The journal entry system of Quickbooks allows there to be multiple credit and debit entries rolled up as one transaction, so long as the values on each side balance.