Finance

Payments, expenses, and income

Record customer receipts, manage employee and company expenses, track recurring costs, and capture other income.

Finance separates cash receipts, operating costs, and non invoice income into distinct modules. This keeps each workflow clear while reports combine the resulting business activity.

Customer payments

Open /payments. The page is titled Transactions and shows payment activity, refunds, allocations, and collection outcomes.

To record a payment directly:

  1. Open /payments/new.
  2. Choose the contact, amount, currency, payment date, method, and optional note.
  3. Allocate the receipt to eligible invoices where applicable.
  4. Save the payment.

The list carries no summary cards. Select Analysis in the header to open the Payments analysis in Reports, which shows Payments, Refunds, Net collected, and Outstanding balance, with the payment insights. See Analysis.

A single payment can allocate across multiple invoices. The allocation rows are the source of truth for invoice paid amounts. Only SUPER_ADMIN and MANAGER can create, update, archive, or restore payments.

Move an erroneous eligible payment to Trash and restore it from /payments/trash. Do not delete a settled provider transaction merely to hide a reconciliation problem.

Open /payments/links. A payment link collects a fixed amount from anyone who has the URL: no invoice, no order, and no account needed on their side. Use it for a deposit, a retainer, or a one off charge you do not want to raise a document for. The list shows each link with its title, amount, status (Active, Paid, Cancelled, or Expired), expiry, and creation date.

To create one, choose New payment link. The page has a form and, beside it, a live preview titled What the customer sees.

  1. Under Payment request, enter a title the customer will recognise (for example, Deposit for October retainer) and an optional note that is shown on the payment page.
  2. Under Amount, enter the fixed amount. It is in your workspace currency and the customer cannot change it. It must be more than zero.
  3. Under Expiry, optionally pick a date in the future. Without a date the link stays payable until it is paid or you cancel it.
  4. Save. The link is copied to your clipboard as soon as it is created.

The preview updates as you type. It shows your business name, the title, the note, the amount due, the Pay button, and the line that payments are processed securely by Stripe. It is a preview only: nothing is charged or sent.

What to know:

  • The amount is fixed in your workspace currency when the link is created.
  • A link is single use. Once it is paid it cannot be paid again, which is what makes the receipt exact. Create another link for another payment.
  • Cancel link stops a link immediately. Anyone opening it afterwards is told the request was cancelled rather than shown an error, so you can share that outcome with your customer.
  • A paid link records income against your workspace. It is left unposted, so posting it to the ledger stays a deliberate finance action.
  • Money lands in your own Stripe account, so you must connect Stripe before a link can be created. The page refuses to create one otherwise rather than give you a URL your customer cannot pay.

Payouts

Open /settings/payments/payouts. This is where the money you collect actually goes, and on what schedule. It is admin only.

The page shows your available and pending balance per currency, your payout schedule, your bank accounts, and recent payouts.

  • Add bank account collects your account details in the browser and hands them straight to Stripe. They never reach an AGARO server or database. You can hold more than one account and choose a default per currency.
  • Schedule controls when Stripe sends money: daily, weekly, monthly, or manual. On manual you pay yourself out when you choose.
  • Pay out now is available on a manual schedule, clamped to the balance that has actually cleared.

If the page says your Stripe account is managed in your own Stripe dashboard, it was connected before AGARO managed payouts and Stripe cannot transfer that control afterwards. Manage payouts from Stripe directly in that case.

One time expenses

Open /expenses and choose New → One time expense.

  1. Enter the date, type, category, vendor, description, and amount.
  2. Choose who paid: the employee or company.
  3. Add billing or reinvoicing details only when the cost belongs to a customer project.
  4. Use analytic distribution to split the expense across projects. Percentages must total 100.
  5. Attach or digitize the receipt where available, then save.

Expense states are Draft, Submitted, Approved, Posted, In Payment, Paid, and Refused.

The workflow pages are /expenses/to-approve, /expenses/to-post, and /expenses/to-reimburse. Managers can approve, refuse, post, reimburse, reinvoice, or report an eligible expense on the next payslip. Employees can submit their own permitted expenses and add comments.

Approve, post, and reimburse

  • Nobody approves or pays out their own expense. If you submitted it, another approver in the workspace has to approve it, and another has to pay it out. The exception is a workspace where you are the only person who could, and then the decision is recorded in the activity log as a self approval.
  • An expense that was created from a bank statement line has already been paid from the company's bank account. Posting it checks that the statement line's bank account is set up and active, that the currency matches, and that the posted amount equals what the bank line took. A bank amount already includes tax, so set the tax as included in the price, remove any withholding, or make the amounts agree.
  • Reimburse pays the employee for expenses that are owed to them. The total is what the posted expenses owe: purchase tax included, and tax withheld at source taken off. Each expense is paid in full for what it owes, so partial reimbursements are not possible. The total you enter must match what is owed.
  • A reimbursement from a bank account must be in the bank account's currency, and agaro does not convert between currencies. It also checks that the bank account has enough funds.
  • An expense already paid from a bank account cannot also go on a payslip, and the other way round. An expense on a payslip is paid by payroll. See Run payroll.

Recurring expenses

Choose New → Recurring expense or open /expenses/new/recurring. The recurring rule generates future expense records on its schedule. Deleting the rule stops future generation but keeps already created expenses.

Expense cards and analysis

Use /expenses/cards for card related expense activity. Select Analysis in the Expenses header, or the Analysis row in the Expenses dropdown, to open the Expenses analysis in Reports: monthly spending, category breakdown, top vendors, and recurring versus one time exposure. The old /expenses/analysis address redirects there. See Analysis.

Other income

Open /income for money that does not originate from a customer invoice, such as interest or miscellaneous revenue. Invoice collections belong in Payments instead. Select Analysis in the Income header, or the Analysis row in the Income dropdown, for the Income analysis in Reports.

Select New income to open the create page, which uses the same layout as the saved record. It asks what was received, from whom, and how.

  1. Enter the amount and the date received. The amount is shown large at the top of the page, and updates as you type.
  2. Choose the customer, or a category such as Custom / Other. A service can be linked, and the page shows which customer it is assigned to.
  3. Add a description for your team or the books.
  4. Save. The entry opens as a record.

A saved entry shows its amount, its state, and who it is from. The state is either Not posted (in the reports, but not in the ledger yet) or Posted (posted to the ledger, with the amount and date locked). Select Post to ledger to post it. Save any changes first, because posting uses the saved entry.

Creating, editing, archiving, and restoring income require SUPER_ADMIN or MANAGER. Deleting an entry asks for confirmation and cannot be undone.

Common problems

What you seeWhat to check
Expense is not in To ApproveIt may still be Draft, it may not require the selected reviewer, or record scope may exclude it.
Analytic split will not saveThe supplied project percentages must total exactly 100.
Expense is absent from posted reportsApprove and post it first.
Payment over allocation is rejectedReduce the allocation to the eligible invoice balance or use the supported overpayment path.
Recurring item keeps generatingPause or delete the recurring rule, not one generated occurrence.
Income duplicates invoice revenueRemove the mistaken income record and keep the invoice payment as the authoritative collection.
Post to ledger says to save firstYou have unsaved changes. Save the entry, then post it.
Cannot approve or pay out an expenseIt is your own expense. Another approver has to act, unless you are the only person who could.
Reimbursement is refused for currencyThe expense is not in the bank account's currency. agaro does not convert. Use a bank account in the expense's currency.
Reimbursement total does not matchEach expense is paid in full for what it owes. Select the expenses again and use the total shown.