I work on OnePassApps, the team behind app.onepassapps.com. The Invoice Maker is one of the apps in the membership, and this is our own build, so every number below came out of the live tab at app.onepassapps.com/apps/invoice-maker on 6 November 2026, in one browser session.
The interesting part of an invoice tool is not the form. It is the arithmetic the form produces and the rules it refuses to guess for you. So this is about what the app actually computed on one invoice, and where it stopped.
The app is here: https://app.onepassapps.com/apps/invoice-maker?utm_source=devto&utm_medium=post&utm_campaign=invoice-maker&utm_content=invoice-maker-link
The three stages
01 From takes the name or business, the address, the email and a tax or company number. 02 Line items takes the work. 03 Payment details and notes takes what you want printed under the totals.
Two lines from the panel are worth quoting exactly, because they are the whole contract:
- "Prices exclude tax. Tax is worked out from the rate you enter on each line."
- "You set every tax rate. Invoice Maker does not check them and gives no tax or legal advice."
So there is no default rate and no advice engine. You type the percentage, and the app does the multiplication and nothing else.
The line item block is small: a description, a quantity, a unit price and a tax percentage, plus an Add line button. The counter above it read "Line items" and "1 of 100" with one line loaded, so a hundred lines is the ceiling the panel states.
What one line became
I filled in one line: description "Design work, two days", quantity 2, unit price 1200, tax 20 percent. The preview pane updated as I typed and showed this table:
- DESCRIPTION QTY UNIT PRICE TAX AMOUNT
- Design work, two days 2 1,200.00 20% 2,400.00
- Subtotal 2,400.00
- "Tax at 20% on £2,400.00" 480.00
- "Total due (GBP)" 2,880.00
(The preview renders the currency symbol in front of the money; the rows above are the same values.)
Two lines in the preview are the app's own wording, and they are what I would quote if someone asked how the tax line is labelled: the subtotal is 2,400.00, the tax line reads "Tax at 20% on £2,400.00", and the final row is "Total due (GBP)". The pane header above the document read "A4 · £2,880.00".
The dates are computed too. The document header showed Issued 6 November 2026 and Due 6 December 2026, and the settings panel said "Falls on 2026-12-06." because the payment-due control was set to days after issue rather than a chosen date.
Rounding, and what the app says about it
The panel states its own rule: "Page breaks are decided by your browser when you print. Amounts are worked out in GBP’s smallest unit and rounded half-up on each line."
I pushed two awkward prices through the same line to see what the header did. With the unit price at 19.995 and the quantity still 2, the preview header read £47.99. With the unit price at 0.005, the header read £0.01. The figures are small enough that you can check the arithmetic yourself, and what I am claiming is the reading, not a claim about the internal rounding order.
The same form as a quote
The Document setting has two values, Invoice and Quote, and switching to Quote changes the wording rather than the numbers:
- The preview header changed from Invoice to Quote.
- The number field became "Quote number" and the document showed "Quote number —" when it was left empty.
- The due row became "Valid until 6 December 2026".
- The client block was relabelled PREPARED FOR instead of BILL TO.
- The final total row became "Quote total (GBP)" and still read £2,880.00.
The rest of the settings are Paper (A4 or US Letter), Currency, Invoice number, Issue date, Payment due (days after issue or a chosen date) and Discount, where the discount line reads "Taken off the subtotal before tax." The currency control showed GBP (£) in this build and I did not change it.
The wire
The page says "Nothing leaves this tab." and in this session the trace agreed with it. With the network log open from the first paint to the last click, the session issued 73 requests: none was a POST or a PUT, and no request carried a body. The hosts were the app itself, its own API and the sign-in widget, plus blob and data URLs. The invoice text, the client email and the tax number were not on any of them.
What I did not get to check
- The Print / save PDF control is a real button, and the page tells you where the page breaks come from, but in my run it produced no file for me to open, so I am not describing what the PDF contains.
- The Export draft JSON control likewise produced no file I could read back. The panel says "Nothing is saved automatically. Export a draft (up to 1 MiB) to keep your work." and I am quoting the panel, not the file.
- I clicked the discount Percent option and did not find a discount field I could read, so I make no claim about what a percentage discount does.
- One browser, one signed-out session, one build, six lines of form and one line of arithmetic. No real client data, and no currency other than GBP was tested.
What it costs
The plan block on the page reads "Standard is free right now", "$0 / month", and "100,000 credits every 30 days · No end date set · No card required", with "No automatic paid subscription. Existing paid subscriptions keep their terms." underneath.
I work on OnePassApps, so that is my own pricing page being read, not a comparison with a competitor. If you want the wider picture, the guides are at https://app.onepassapps.com/guides?utm_source=devto&utm_medium=post&utm_campaign=invoice-maker&utm_content=guides-link