Solavel Solavel Docs

Refund receipts

docs/solavel-finance/refund-receipts.md

Who can use this: Owner, Manager, Accountant. URL / Route: /finance/ar/refund-receipts (finance.ar.refund-receipts.index). Detail: finance.ar.refund-receipts.show, edit, update, create, store, destroy. Action endpoints: finance.ar.refund-receipts.post, void, pdf. Plan / feature gate: feature:tracker.credit_notes AND feature:tracker.record_offline_payments (both default: enabled). Permissions: sales.refunds.view, sales.refunds.create, sales.refunds.edit_draft, sales.refunds.delete, sales.refunds.post, sales.refunds.void.

Purpose

A Refund receipt records cash going back to a customer — the actual money-out movement that pairs with a Credit note. Use it when:

  • a customer returns goods and you refund the money,
  • a customer overpaid and you return the excess,
  • a deposit is being returned because a sale fell through.

The difference between this and a Credit note: a credit note only reduces the customer's AR balance (bookkeeping). A refund receipt also debits Cash/Bank — it's an actual disbursement.

Step by step

Browse refund receipts

Open /finance/ar/refund-receipts. Each row shows the number, date, customer, amount, source account (Cash/Bank), and status.

Create a refund receipt

Route: finance.ar.refund-receipts.create / store. Permission: sales.refunds.create.

  1. Click New refund receipt.
  2. Pick the Customer.
  3. Set the Date.
  4. Pick the Source account — the Cash / Bank account the refund is paid from.
  5. Enter the Amount and a Reference / Method (Cash / Bank transfer / Card / Cheque).
  6. (Optional) Link the originating Credit note or Invoice for the audit trail.
  7. Save as Draft or Save and Post.

Edit a draft / Delete a draft / Print a PDF

finance.ar.refund-receipts.edit / update for drafts; finance.ar.refund-receipts.destroy to delete drafts; finance.ar.refund-receipts.pdf for the PDF.

Post a refund receipt

Route: finance.ar.refund-receipts.post. Permission: sales.refunds.post.

Writes the GL journal:

  • Debit the customer's AR control account (reducing the credit owed to them), OR Debit a Refunds expense account, depending on whether the refund consumes an existing credit balance or creates one from scratch.
  • Credit the Cash / Bank account.

If the refund applies to a Credit note's unapplied balance, the credit note's open amount is reduced by the refund amount.

Void a posted refund receipt

Route: finance.ar.refund-receipts.void. Permission: sales.refunds.void.

Reverses the GL journal, restores the Credit note's unapplied balance (if linked), and marks the refund Void. Use when the refund was issued in error.

How the journal looks

A JOD 117 refund that consumes an existing credit note's unapplied balance:

Account Debit Credit
AR — Customer credit (note) 117.00
Bank 117.00

The credit note's unapplied balance drops to zero; the cash leaves the bank.

A JOD 117 refund without a linked credit note (e.g. customer never had a credit on the books — the refund creates one and immediately settles it):

Account Debit Credit
Refunds & allowances (expense) 117.00
Bank 117.00

A partial refund of a JOD 117 credit note — refunding only JOD 50, leaving JOD 67 on account:

Account Debit Credit
AR — Customer credit (note) 50.00
Bank 50.00

The credit note's unapplied balance becomes JOD 67 and stays available for future invoices.

Common mistakes

  • "Source account must be Cash / Bank." Refund receipts cannot be paid from payment-receivable accounts, Undeposited Funds, or AR accounts. Pick the real bank or cash account the money is leaving.
  • "I issued a refund but the credit note still shows the same unapplied balance." The refund only reduces the credit note's unapplied balance if you linked the credit note on the refund. Re-open the refund, link it, and re-post.
  • "Period locked" → posting and voiding both blocked. Issue the refund dated in an open period if appropriate.
  • Currency mismatch. The customer's currency determines the refund currency. To refund in a different currency, settle the credit note in the customer's currency first, then use the bank's FX features to pay them in another.

Behaviour and rules

  • Refund-receipt JE source label. On the Journal entries page, the refund JE is tagged with the green Refund Receipt chip.
  • Payments page. Refund receipts also surface on the Payments page tagged Refund Receipt with a Money In chip (from the customer's perspective the money goes back, but from the books' perspective the cash account is credited — the Payments page presents the workflow, not the GL direction). Filter to source_kind=refund_receipt to see all of them.
  • Period lock. Posting / voiding require the date's period to be open.
  • Source account must be a real cash / bank account — payment receivables and Undeposited Funds do not qualify.

Permissions / restrictions

  • View / create / edit drafts / post: sales.refunds.{view,create,edit_draft,post}.
  • Void / delete drafts: sales.refunds.{void,delete}.

Related

  • Credit notes — the bookkeeping side of customer credits.
  • Retainers — refund the unallocated balance of a retainer.
  • Sales receipts — refund a walk-in sale.
  • Invoices — refund an overpaid invoice.
  • Payments — every refund receipt appears here as a "Refund Receipt" row.
  • Customers — refund history shown on the customer profile.
  • Banking — match refund outflows against bank statements.
  • Reports — Customer Balance Summary, Cash Flow.
Source: docs/solavel-finance/refund-receipts.md ← All documentation