Skip to main content

Accounting

The Accounting page is the financial control centre for your server. It consolidates all income and expenses in one place: support payments from players, dzbot subscription fees, mod marketplace purchases, and any manual entries you create.

Server Admin โ†’ Accounting

Accounting currencyโ€‹

Your organization keeps its books in one currency, the accounting currency. It applies to all servers of the organization: every total, chart and entry in the accounting is in it, and support payments and subscriptions paid with real money are charged in it. A US server, for example, collects US dollars.

You choose it together with your organization's country when you set up your first server (the Country & currency step of the setup wizard). The choice is final and cannot be changed later. Organizations that already existed got the currency of the country in their billing address. If dzbot had nothing to go by, it asks you once when you open Accounting or Monetization; nothing on these pages works until you have chosen.

You can choose from 30 currencies: EUR, USD, GBP, CHF, AUD, BRL, CAD, CNY, CZK, DKK, HKD, HUF, IDR, ILS, INR, ISK, JPY, KRW, MXN, MYR, NOK, NZD, PHP, PLN, RON, SEK, SGD, THB, TRY and ZAR. These are the currencies Stripe can charge in and for which the European Central Bank (ECB) publishes an exchange rate every working day.

Amounts in another currencyโ€‹

An exchange rate says what one currency is worth in another, for example 1 euro = 1.17 US dollars. Whenever money comes in or goes out in a currency other than your accounting currency, dzbot converts it before it is booked:

WhatHow it is booked
Manual entries and receiptsAt the ECB rate of the entry's date โ€” or the amount you actually paid, if you enter it (see Adding a manual entry)
Your dzbot subscription, AI credit and mod purchasesThese are priced in euros (the subscription costs 10 โ‚ฌ). dzbot books what your card was actually charged in your currency โ€” Stripe shows the price in your local currency, e.g. โ‰ˆ 11.68 USD. If that amount is not available, the ECB rate of the payment day is used
Stripe fees and net amounts of support payments and subscriptionsWhen Stripe pays you out in another currency than your books, they are converted back at the exact rate Stripe used

On weekends and holidays, when the ECB publishes no rate, the last rate before that day is used. The entry detail shows the original amount, its currency and the rate.

A reversal cancels exactly the amount that was booked, so a rate that has changed since leaves no difference behind. A refund books what actually came back.

Overviewโ€‹

The page has three tabs:

TabWhat it shows
DashboardKPI summary cards, monthly trend chart, and all-time totals by category
IncomesPaginated list of all income entries with filters and actions
ExpensesPaginated list of all expense entries with filters and actions

Dashboard tabโ€‹

All dashboard figures are net of cancellations: a booked reversal and the entry it annuls both drop out entirely, and a refund is subtracted from the category of the entry it reverses instead of counting as an expense of its own. Only booked entries are included โ€” drafts and pending refunds are not.

KPI cardsโ€‹

CardDescription
MTD IncomeTotal income booked in the current calendar month
MTD ExpensesTotal expenses booked in the current calendar month
MTD NetIncome minus expenses for the current month
YTD NetNet income/expenses for the current calendar year

Monthly Overview chartโ€‹

An area chart covering the last 13 months, showing income (green), expenses (red), and net (indigo) side by side. Hover a data point to see the exact amounts for that month.

By Categoryโ€‹

An all-time breakdown of every entry type, grouped by income categories (shown green) and expense categories (shown red). Each row shows the category name, the number of entries, and the total booked amount.

Income categories:

  • Support Payment โ€” player support payments via the Monetization page
  • Manual โ€” manually created income entries

Expense categories:

  • dzbot Subscription โ€” your monthly or annual dzbot platform fee. If dzbot refunds a payment, the refund is booked against it automatically.
  • dzbot AI credit โ€” prepaid AI credit top-ups; booked once for the whole organization, not per server. Individual AI requests are never booked, only top-ups. See AI Companion setup
  • Processing Fee โ€” Stripe processing fees deducted from support payments
  • Tax โ€” VAT components of support payments
  • Mod Purchase โ€” purchases from the mod marketplace
  • Manual โ€” manually created expense entries
Nitrado hosting costs

dzbot no longer imports Nitrado hosting costs. Nitrado is prepaid: a server extension only deducts from your Nitrado credit, and Nitrado sends no invoice for it. That deduction is not a receipt your tax office will accept. The expense is the credit top-up, with the invoice from marbis GmbH (the company behind Nitrado). Nitrado does not send that invoice automatically either, so ask Nitrado support for it, then book the top-up as a manual expense and attach the invoice.

Until October 2026, dzbot imported these deductions automatically as expenses. Because they are not backed by an invoice, those entries did not meet the legal requirements for bookkeeping records. On 5 October 2026 all of them were cancelled with a counter-entry that states this reason. The original entries remain visible in the list, as the records must not be deleted, but they no longer count towards your totals.

Incomes and Expenses tabsโ€‹

Both tabs show a paginated table of entries (50 per page). Click a row to open the entry. Next to the search you can filter by category, status, period and Details missing (drafts that cannot be booked yet); the card title shows the sum of everything the filters find, per currency.

The search field matches vendor, receipt reference, notes, line items, the paying player and an exact amount (49,99). A document number (17, #17 or an invoice's 17-2) and a pasted Stripe id find exactly that entry. The admin search in the top bar finds entries the same way.

The entry windowโ€‹

A manual entry opens in one wide window: the receipt on the left, the booking on the right. On a phone the receipt sits on top and can be folded away.

  • A draft is the form itself: change the fields, drop or pick more receipts on the left, then Save or Book. Delete a draft with โ‹ฏ โ†’ Delete draft.
  • A booked entry shows the same layout without the form. You can still add receipts to it; the team member can be changed; Reverse creates a reversal draft.
  • โ€น 2 / 18 โ€บ in the header steps through the list the window was opened from. Book & next books the draft and opens the next one; unsaved changes are saved when you step.
  • Booking in the window asks nothing โ€” everything that is booked is on screen. For an amount in another currency, the line above the buttons says what will end up in your books.

Automatic entries (support payments, Stripe fees, subscriptions, refunds) open in a narrower window with their details, such as the paying player and the fee breakdown.

Adding a manual entryโ€‹

Click + Income or + Expense, or drop a receipt on the Expenses tab (see Recording receipts):

  1. Set the Date the income or expense occurred.
  2. Select the Currency the amount was paid in โ€” any currency. If it is not your accounting currency, the form shows what will end up in your books, e.g. "This amount will be booked as โ‰ˆ 11.68 USD in your books (ECB rate of 22 Oct 2026)". If you know the amount you actually paid in your accounting currency (for example what your bank charged), enter it instead; then exactly that is booked. For a currency without an ECB rate, the paid amount is required.
  3. Enter the Vendor, and optionally the Invoice number, a Note and the team member the entry concerns (e.g. whose out-of-pocket purchase it reimburses).
  4. Add one or more Lines โ€” each with a description, a category, a quantity, the VAT rate and the net and gross total. Type whichever amount you know: the other one is calculated from the VAT rate. Changing the VAT rate recalculates the net amount from the gross, because a receipt tells you what you paid.
  5. Save keeps it as a draft; Book books it.

A draft may be incomplete. To book an expense, it needs a vendor, at least one line, a category on every line, and amounts that add up to more than 0 (an income needs no vendor). Until then Book stays disabled, the footer lists what is missing, and the list marks the draft Details missing.

A draft keeps the currency it was entered in. It is converted when you book it. Until then, the list and the form show what it will roughly be booked as, e.g. "โ‰ˆ โˆ’9.35 โ‚ฌ" with the original "10.46 $" below it.

While you fill in the form, it checks your ledger for the same booking. If an entry with the same invoice number exists, a red notice says so. If an entry with the same amount exists within 7 days of the date, a yellow notice lists it. Neither stops you from saving.

Recording receiptsโ€‹

On the Expenses tab, drag photos or PDFs anywhere onto the page, or click Upload receipts (on a phone you can take a photo). JPEG, PNG, WebP and PDF are accepted, up to 20 MB each.

  • One file becomes a new expense draft with the receipt attached, and the entry window opens.
  • Several files open Put receipts together first. Every file starts as its own receipt. Drag files that belong together (front and back, several pages) onto one box โ€” on a phone, tap a file and move it โ€” or click Group with AI, which also reads the receipts and names each box after its vendor. Then click Create drafts: one draft per box appears in the list at once.

Fill in from receipts with AI in the entry window reads the attached receipts and fills the fields that are still empty: vendor, invoice number, date, note, lines with VAT rate and category, and โ€” for organizations โ€” the team member a receipt shows as buyer. What you typed is never overwritten. In Put receipts together, Prefill with AI does the same for every new draft in the background; the list shows AI reading until it is done. Receipts that Group with AI already read become filled drafts straight away.

Nothing is booked automatically. Open the new drafts, check them against the receipt, and book them with Book & next.

Reading receipts sends them to OpenAI and uses a small amount of your organization's AI credit; without credit the AI buttons are disabled and you fill in the drafts yourself. Uploads that were put together but never became drafts stay listed next to the search as Open upload and are deleted after 30 days.

Booking from the listโ€‹

A complete draft has a book button at the end of its row. It asks first and shows the booking as it will stand: the receipt, vendor, date, every line with category and VAT, the total and โ€” for another currency โ€” the amount in your books. Booked entries cannot be changed any more, only reversed.

Support payment detailโ€‹

Click a Support Payment row to see:

  • The player who made the payment (or "Anonymous" if not linked)
  • The gross amount paid
  • Processing & service fees deducted
  • VAT component (if applicable)
  • Net amount credited to your account

If Stripe paid out in another currency than your books, the fees and the net amount are converted back at the exact rate Stripe used.

Fee details may show as pending for newly received payments while Stripe finalises the transaction.

Document numbers and invoicesโ€‹

Every booked entry automatically receives a sequential document number, counted per organization across all servers. The number appears in the entries list ("No." column) and in the entry detail.

For booked income entries you can issue a proper invoice PDF from the entry detail:

  1. Fill in your issuer data once under Organization โ†’ Invoicing (name, address, tax number / VAT ID, footer). Issuing is blocked until name and address are set.
  2. Open a booked income entry and click Issue invoice. Up to โ‚ฌ250 gross, recipient details are optional (small-amount invoice, ยง 33 UStDV); above that, the recipient's name and address are required.
  3. The invoice is generated once as a PDF, carries the entry's document number, and is never edited afterwards. To fix a mistake, cancel it and issue a corrected version โ€” the new document gets a suffixed number (e.g. 17-2).

Whether an invoice shows VAT follows the booking itself: if none of its line items carry tax, the document shows a single gross total and no tax columns. There is no separate switch for this, and it is not tied to any one country's rules โ€” it covers small-business schemes, reverse charge, sales outside the EU and exempt items alike.

Any note your tax rules require goes in the footer, which is yours to word. The issue dialog pre-fills it, together with the tax line, from your invoicing settings and lets you change both for that one document. That is what to use when you invoice an older booking that needs a different note than your settings carry today โ€” for example a booking from before you left a small-business scheme.

Refunding or reversing a booked entry automatically cancels its active invoice and issues a cancellation invoice (suffix -S) with negated amounts.

The server setting Maximum single payment (default 250) caps individual support payments in the player checkout and in manual recording. It counts in whole units of your accounting currency. In euros, the default keeps single receipts within the German small-amount invoice threshold. Servers in other countries or currencies can raise it.

Support payments tabโ€‹

Not every donation arrives through Stripe. Somebody sends money by PayPal or bank transfer, and it needs to count like any other support payment. This tab records those.

The list shows the payments you recorded yourself, on every server of the organization. Search by player, payment method, reference or amount, and filter by server, payment method, booked or reversed, and date.

Fill in the server, the player, the gross amount, the payment method and the date. Provider fee, tax rate and an external reference are optional; the tax rate starts at whatever your organization has configured. Payment methods are always stored in lower case, so the same route cannot quietly exist twice.

Trigger actions is on by default. With it, recording the payment fires the same event a Stripe donation fires, so rewards, achievements and Discord automation run exactly as they would have. Untick it when you are entering old payments after the fact and do not want the rewards to go out again.

If dzbot notices an entry that looks like one you already booked โ€” the same external reference, or the same player and amount on the same day โ€” it stops and asks before recording it twice.

The result is a real ledger entry. It counts in your totals and it shows up in the player's own payment history, indistinguishable from a Stripe payment except by its payment method.

Correcting a mistakeโ€‹

There is no edit and no delete. A wrong entry is reversed, which books a counter-entry against the original, cancels any invoice that was issued for it, and requires a reason.

Two consequences are worth knowing before you reverse something:

  • Rewards that already went out stay out. The reversal fixes the books, not the game. Taking a reward back from the player is a separate, manual job.
  • Stripe payments cannot be reversed here. Refund those through Stripe.

Permissions and access rightsโ€‹

  • Viewing the Accounting page requires accounting.view.
  • Creating, booking, and deleting manual entries requires accounting.manage. The same right covers recording receipts.
  • Recording a support payment requires admin.accounting.record_support_payment, deliberately split out of accounting.manage because it is the one accounting action with consequences inside the game. Holding only this right opens the Accounting page on that tab alone. Everyone who already had accounting.manage was granted it automatically.

Also in Discord: /org shows this month's and year's figures and the latest bookings, read-only, with the same access rule as this page.