| 1 | --- |
| 2 | title: Saturn V1.1 |
| 3 | description: Multi-currency invoices, separate pay and billing rates, custom timesheet fields, recurring expenses, member invoices, and a move to AGPL. |
| 4 | date: 2026-05-29 |
| 5 | version: 1.1.0 |
| 6 | --- |
| 7 | |
| 8 | V1.1 ships the next chunk of the roadmap: multi-currency invoices, separate |
| 9 | pay and billing rates, custom fields on timesheets, and a pile of fixes |
| 10 | around dates and permissions. |
| 11 | |
| 12 | ## Multi-currency invoices |
| 13 | |
| 14 | If you bill a client in USD but pay a contractor in INR, you no longer have to |
| 15 | do the conversion in your head (or in a spreadsheet you forget about). Saturn |
| 16 | now captures exchange rates at the moment an invoice is created and stores |
| 17 | them with the invoice, so the numbers stay reproducible months later. |
| 18 | |
| 19 | - Invoices record the exchange rates used for every line item. |
| 20 | - A new "Rate breakdown" view shows which billing rates were applied, and a |
| 21 | "Captured rates" view shows the conversion snapshots. |
| 22 | - Once an invoice has a line item, its currency is locked so you cannot |
| 23 | accidentally mix things up halfway through. |
| 24 | - Timesheet reports and totals now render in the project's configured |
| 25 | currency. |
| 26 | |
| 27 | ## Separate pay and billing rates per member |
| 28 | |
| 29 | Until now a member had one rate and that rate did double duty. That made it |
| 30 | awkward if you pay a contractor one number and bill the client another. |
| 31 | |
| 32 | You can now set a **pay rate** and a ** |
| 33 | independently, each with its own currency and frequency. If you only set a |
| 34 | pay rate, billing falls back to it, so nothing changes for existing setups. |
| 35 | |
| 36 | ## Timezones, finally done properly |
| 37 | |
| 38 | Dates in Saturn used to be stored as UTC midnight timestamps, which meant a |
| 39 | date you picked could render a day early for anyone west of UTC. We have |
| 40 | moved every user-picked date (invoice dates, due dates, timesheet entries, |
| 41 | expense dates, rate effective-from dates, and so on) to proper zoneless date |
| 42 | columns, and we now store each user's timezone so formatting is consistent |
| 43 | whether it happens on the server or in the browser. |
| 44 | |
| 45 | If you ever saw an invoice dated "Jan 14" show up as "Jan 13" for your |
| 46 | client, that is fixed. |
| 47 | |
| 48 | ## Custom fields on timesheet entries |
| 49 | |
| 50 | Owners and admins can now define extra fields on timesheet entries. This is |
| 51 | the one a lot of you asked for: storing a PR number, a ticket ID, a URL, or |
| 52 | whatever else gives a time entry its context. When extra fields exist, the |
| 53 | quick-log flow routes through a proper create page so you can fill them in. |
| 54 | |
| 55 | ## Recurring expenses |
| 56 | |
| 57 | You can mark an expense as recurring, and it will show up automatically when |
| 58 | you create the next invoice. Good for retainers, subscriptions you re-bill, |
| 59 | and any cost that just keeps coming back every month. |
| 60 | |
| 61 | ## Attachments on expenses |
| 62 | |
| 63 | Expenses now accept file attachments, so receipts live with the expense |
| 64 | itself instead of in a folder somewhere you will never find again. |
| 65 | |
| 66 | ## Member invoices |
| 67 | |
| 68 | Invoices can now be issued to a member, not just a client. This is the |
| 69 | groundwork for paying contractors out of the same system you use to bill |
| 70 | clients. You can create a member invoice straight from a timesheet report, |
| 71 | and the approve / dispute flow works the same way it does for clients. |
| 72 | |
| 73 | ## Smaller things that add up |
| 74 | |
| 75 | - **Time entry units in the invoice editor.** Switch a line between hours |
| 76 | and minutes without leaving the invoice. The default can be set per |
| 77 | organization or per project. |
| 78 | - **Default invoice "to" and "from".** Set these once in org settings and |
| 79 | every new invoice autofills them. |
| 80 | - **Invoice numbers are unique per project**, not globally. You can finally |
| 81 | use "INV-001" across more than one project. |
| 82 | - **Google OAuth** on sign-in and sign-up. |
| 83 | - **Email verification** is now required before you reach the dashboard. |
| 84 | Spam accounts were getting noisy. |
| 85 | - **Settings got a real layout.** The settings page is split into tabbed |
| 86 | subsections (billing, invoice numbering, timesheet defaults, client |
| 87 | approval, workspace, project), and member rates now support more |
| 88 | precision. |
| 89 | |
| 90 | ## License change: MIT to AGPL |
| 91 | |
| 92 | Saturn is now AGPL-licensed. The code is still open, you can still read it, |
| 93 | fork it, run it, and contribute to it. What you cannot do is take it, |
| 94 | rebrand it, wrap a paywall around it, and sell it as your own without |
| 95 | giving the same freedoms back. MIT made that too easy. |
| 96 | |
| 97 | ## What's next |
| 98 | |
| 99 | Recurring invoices, and a proper test suite so new features stop breaking |
| 100 | old ones. Track progress on |
| 101 | [GitHub](https://github.com/phantomknight287/saturn) |