Bookkeeping effects
Every payment and refund a supplier records, and every payment a customer makes online, writes entries once it settles (a bank payment still Processing, or that Failed, writes none) to the supplier's Bookkeeping. This page shows exactly which entries each action adds, with real numbers. One rule runs through all of it: Clipp never edits or deletes the amount of a payment's bookkeeping entry. A monetary correction (amount, date, or account) adds an opposite entry that cancels the old one, then a fresh entry with the new values. A description-only correction updates the existing entry's description in place. Store credit never appears in the books at all.
Who uses it
- Supplier staff with Accounting access read these entries on the Bookkeeping page, in its export and in the bookkeeping report PDF.
- Supplier staff with full invoice access cause them, by recording, editing and deleting payments and refunds.
How it works
What an entry looks like
On the Bookkeeping page each entry shows Date, Name, Description, Amount, Type, Account and Category. Money going out (an expense, or a negative income such as a refund or a reversal) shows in red brackets, like ($100.00).
| Entry | Name | Description | Type | Amount |
|---|---|---|---|---|
| A payment | Order Payment Received | "A payment was received from {Customer} for order {Invoice}" + reference + note | Income | + amount |
| The part of a payment that settles the order fee | Order Fee Payment Received | "Order fee payment was received from {Customer} for order {Invoice}" | Income | + fee part |
| The supplier's share of a card or bank processing fee | Order Transaction Processing Fees | "Processing fees for order {Invoice}", with lines Payment provider fee and Base platform fee | Expense | + fee |
| A refund | Refund Provided | "{Method} refund sent to {Customer} for order {Invoice}" + reference + note | Income | − amount |
| The refund when an order is cancelled | Payment Reversal – Order Cancelled | "Payment reversal for order {Invoice} from {Customer} — order cancelled." | Income | − amount |
| Cancelling any entry above | {same name} - Reversal | "Reversal — {original description}" | same as the original | the original amount with its sign flipped |
The reference is added in brackets: " (Check #1042)", " (Txn TXN123)" or " (Card x4242)". A note is added after a full stop: "… for order INV-1001. Paid at counter".
Which category
| How the money moved | Category (default name) |
|---|---|
| Cash | Cash Payment |
| Check | Check Payment |
| Other ACH | Other ACH Payment |
| Other Credit Card | Other Credit Card Payment |
| Other | Other Payment |
| Card, paid online | Online Payment |
| Bank (ACH), paid online | ACH Payment |
| The order-fee part of any payment | Other Income – Order Fees |
| A refund of any method | Sales Return (the income one) |
| Processing fee | Other Expense – Transaction Processing Fees |
| Store credit, given or spent | none: nothing is booked |
These are the categories every supplier starts with. If a supplier has no category for a payment's method, the payment is refused ("Supplier … has no accounting category for payment mode …") and nothing is saved (verify which suppliers lack one).
Which account
Each entry lands in a financial account:
- The account picked on the payment or refund form, if one was picked. Unassigned is a valid choice.
- Otherwise the default for that method, set with Set default Account on the Payment Methods tab. Bank (ACH) payments use the Stripe row's default.
- Otherwise Unassigned.
A processing fee always lands in the same account as the payment it belongs to. A reversal always lands in the same account as the entry it cancels.
Dates
- A payment or refund is booked on the date entered on the form, not the day it was typed in.
- A reversal keeps the date of the entry it cancels.
- A processing fee is booked on the day the processor settled it, not the day the customer paid.
- A bank (ACH) payment's income is booked on the day the bank settled it, not the day the customer submitted it.
Calculations
Every example uses invoice INV-1001 from Fav Cafe for $250.00. Cash defaults to the Cash Drawer account and Check to Operating Bank. Customer store credit starts at $0.00. "Live" means the entry still counts. Bookkeeping lists every entry; the live ones add up to the money.
Record a cash payment
$100.00 cash, dated Oct 1.
| Before | After | |
|---|---|---|
| Bookkeeping | nothing | Order Payment Received, Income, $100.00, Oct 1, Cash Payment, Cash Drawer |
| Cash Drawer balance | $0.00 | $100.00 |
| Invoice | Unpaid, $250.00 due | Partially paid, $150.00 due |
| Store credit | $0.00 | $0.00 |
With a check, check number 1042 and the note "Paid at counter", the only differences are the category (Check Payment), the account (Operating Bank) and the description: "A payment was received from Fav Cafe for order INV-1001 (Check #1042). Paid at counter".
Order fee split
If the order carries a one-time order fee, the first money in pays the fee before the goods. INV-1001 includes a $10.00 order fee:
| Payment | Entries added |
|---|---|
| $100.00 cash (first payment) | Order Fee Payment Received $10.00 (Other Income – Order Fees) and Order Payment Received $90.00 (Cash Payment) |
| $150.00 cash (second payment) | Order Payment Received $150.00. The fee is already settled. |
A payment smaller than the outstanding fee books only an Order Fee Payment Received entry. Store credit and Clipp promotion payouts never count toward the fee.
Pay with store credit
$100.00 of the customer's store credit applied to INV-1001.
| Before | After | |
|---|---|---|
| Bookkeeping | nothing | nothing |
| Customer's store credit | $120.00 | $20.00 |
| Invoice | $250.00 due | $150.00 due |
Store credit isn't money the supplier holds. Giving it, spending it, correcting it and removing it only move the customer's credit balance. (#2306, IMM-009)
Overpayment issued as store credit
$300.00 cash on INV-1001 recorded from Add Payment on the Invoices page, which keeps the extra $50.00 as store credit.
| Before | After | |
|---|---|---|
| Bookkeeping | nothing | Order Payment Received, $250.00, Cash Payment, Cash Drawer |
| Cash Drawer balance | $0.00 | $250.00 (though $300.00 went into the drawer) |
| Customer's store credit | $0.00 | $50.00 |
| Invoice | $250.00 due | Paid |
The extra $50.00 isn't booked anywhere, so the drawer holds $50.00 more than Bookkeeping says. This was left on purpose, pending an accounting decision on how to book "cash in, store credit owed". (#2499)
Pay several invoices at once
$100.00 cash across INV-1001 (now owing $40.00) and INV-1002 (owing $30.00), from Add Payment on the Invoices page.
| Entries added | |
|---|---|
| INV-1001 | Order Payment Received $40.00 |
| INV-1002 | Order Payment Received $30.00 |
| The $30.00 extra | none. It becomes store credit. |
All entries are written together with the payments, so either everything lands or nothing does.
A card payment online
The customer pays INV-1001's $100.00 balance by card. By default the customer pays the card fee: 100 × 2.9% + $0.30 = $3.20, so they're charged $103.20. Stripe's own fee is assumed here to be its standard 2.9% + 30¢ on what it charged: 103.20 × 0.029 + 0.30 = 3.2928 → $3.29 (verify: Stripe's real rate varies by account).
| Restaurant pays the fee (default) | Supplier absorbs the fee | |
|---|---|---|
| Customer charged | $103.20 | $100.00 |
| Income entry | Order Payment Received $100.00, Online Payment | Order Payment Received $100.00, Online Payment |
| Fee entry | Order Transaction Processing Fees $0.09 (3.29 − 3.20), Expense | Order Transaction Processing Fees $3.20, Expense |
| Net in the books | $99.91 | $96.80 |
| What Stripe pays out | $103.20 − $3.29 = $99.91 | $100.00 − $3.20 = $96.80 |
The fee entry appears once Stripe reports the real fee, usually within moments, and is dated the day Stripe settled it. The customer's $3.20 surcharge isn't booked as income: it only covers the fee. See Processing fees.
A bank (ACH) payment online
The customer pays $100.00 by bank. Stripe's ACH fee is assumed at 0.8%, so $0.80 (verify).
| When | Bookkeeping | Invoice |
|---|---|---|
| Customer submits | nothing yet | Processing |
| A few business days later, the bank payment clears | Order Payment Received $100.00, ACH Payment, dated the settlement day, plus Order Transaction Processing Fees $0.80 | Paid |
| Or the bank payment fails | nothing | back to Unpaid, $100.00 due |
The income entry is written when the bank settles the payment, not when the customer submits it, so a bounced $100.00 ACH never reaches the books. If saving the entry fails when the bank settles, the payment stays Processing and the next settlement notice tries again. (#2568, ASB-001 to ASB-006)
Edit a cash payment from $100 to $60
$100.00 cash dated Oct 1, corrected on Oct 15 to $60.00, same date.
| # | Entry | Amount | Date | Before | After |
|---|---|---|---|---|---|
| 1 | Order Payment Received | $100.00 | Oct 1 | live | cancelled by #2 |
| 2 | Order Payment Received - Reversal | ($100.00) | Oct 1 | — | new |
| 3 | Order Payment Received | $60.00 | Oct 1 | — | new, live |
| Before | After | |
|---|---|---|
| Cash Drawer balance | $100.00 | $60.00 (100 − 100 + 60) |
| Invoice | Partially paid, $150.00 due | Partially paid, $190.00 due |
Edit it again
$60.00 → $80.00. Only the live entry (#3) is cancelled:
| # | Entry | Amount | Status |
|---|---|---|---|
| 1 | Order Payment Received | $100.00 | cancelled |
| 2 | Order Payment Received - Reversal | ($100.00) | |
| 3 | Order Payment Received | $60.00 | cancelled |
| 4 | Order Payment Received - Reversal | ($60.00) | new |
| 5 | Order Payment Received | $80.00 | new, live |
Net: 100 − 100 + 60 − 60 + 80 = $80.00. Invoice: $170.00 due.
Edit only the date
$100.00 cash moved from Oct 1 to Sep 28.
| Entry | Amount | Date |
|---|---|---|
| Order Payment Received (original) | $100.00 | Oct 1 |
| Order Payment Received - Reversal | ($100.00) | Oct 1 |
| Order Payment Received | $100.00 | Sep 28 |
October nets to $0.00 and September gains $100.00. The invoice doesn't change.
Edit only the note or check number
No new entries. The existing entry's description is rewritten, for example "…for order INV-1001 (Check #1042). Paid at counter" becomes "…(Check #1050). Paid at counter". Balances don't move.
Change the method from cash to check
$100.00 cash changed to check, same amount.
| Entry | Amount | Category | Account |
|---|---|---|---|
| Order Payment Received (original) | $100.00 | Cash Payment | Cash Drawer |
| Order Payment Received - Reversal | ($100.00) | Cash Payment | Cash Drawer |
| Order Payment Received | $100.00 | Check Payment | Operating Bank |
Changing the method re-suggests that method's default account in the form, and the new entry goes wherever the form says. Cash Drawer drops by $100.00 and Operating Bank gains $100.00. The invoice doesn't change.
Change only the account
Same pattern: a reversal of ($100.00) on the old account and a new $100.00 entry on the new one. The category doesn't change.
Change a payment from cash to store credit
$100.00 cash changed to Store Credit. The customer holds $120.00 of credit.
| Before | After | |
|---|---|---|
| Bookkeeping | Order Payment Received $100.00 | adds Order Payment Received - Reversal ($100.00). Nothing new is booked. |
| Customer's store credit | $120.00 | $20.00 |
| Invoice | $150.00 due, Partially paid | $150.00 due, Partially paid (store credit counts toward paid) |
Going back from store credit to cash returns the $100.00 of credit and books a fresh $100.00 Order Payment Received.
Delete a payment
INV-1001 paid $100.00 + $150.00 cash. The supplier deletes the $100.00 with the reason "Entered twice".
| Before | After | |
|---|---|---|
| Bookkeeping | $100.00 and $150.00 entries, both live | adds Order Payment Received - Reversal ($100.00), dated like the $100.00 payment |
| Cash Drawer balance | $250.00 | $150.00 |
| Invoice | Paid, $0.00 due | Partially paid, $100.00 due |
Refunds
A refund recorded from the invoice's Issue Refund tab books Refund Provided (cash and the other manual methods; store credit books nothing) in the same save as the refund, so a refund that can't be booked is refused whole. A refund made when cancelling books Payment Reversal – Order Cancelled, see Cancel an order with a refund. The next three examples apply to refund records on an order, such as ones recorded from the invoice or that came across from the previous system.
Edit a cash refund from $100 to $60
| Entry | Amount |
|---|---|
| Refund Provided (original) | ($100.00) |
| Refund Provided - Reversal | $100.00 |
| Refund Provided | ($60.00) |
Net out: $60.00. The invoice's balance due drops from $100.00 to $60.00. A refund's reversal is a positive amount because it cancels money going out (IMM-018).
Delete a cash refund
A single Refund Provided - Reversal of $100.00 is added. The invoice is paid again, and the drawer balance goes back up by $100.00 (IMM-007).
Change a refund from cash to store credit
| Before | After | |
|---|---|---|
| Bookkeeping | Refund Provided ($100.00) | adds Refund Provided - Reversal $100.00. Nothing new is booked. |
| Customer's store credit | $0.00 | $100.00 |
The other way, store credit to cash, takes the $100.00 credit back (refused if it's spent) and books a fresh Refund Provided ($100.00) (IMM-019).
Cancel an order with a refund
An invoice for $275.00 had $25.00 of the customer's store credit applied and was paid the remaining $250.00 in cash. The supplier cancels it and refunds by check. The refund is always the full amount paid: $250.00.
| Before | After | |
|---|---|---|
| Bookkeeping | Order Payment Received $250.00 | adds Payment Reversal – Order Cancelled, ($250.00), Sales Return, Operating Bank |
| Customer's store credit | $0.00 | $25.00, returned automatically, nothing booked |
| Invoice | Paid | Cancelled, records read-only |
The original payment entry stays; the cancellation entry cancels it out.
Where it shows up
- Bookkeeping page, its account balances, its CSV export and the bookkeeping report PDF: every entry, reversals included.
- Not in the sales report's Payment Breakdown, which reads payments rather than bookkeeping entries. It counts only Paid payments, net of refunds, by payment date. See Reports & analytics.
Permissions
- Seeing entries needs Accounting access: Admin and Clerk by default.
- Changing which account a method defaults to needs the Admin role.
- Entries are created by whoever records the payment. Nobody needs Accounting access for that.
Decisions
- Corrections are a reversal plus a rebook, never an edit. The ledger keeps a full trail and nets to the latest amount. (#1936)
- Each entry posts to an account chosen per method, or Unassigned. Money lands where it actually went. (#2019, #2124)
- Store credit is never booked. It isn't money the supplier holds. (#2306)
- Refunds are negative income in Sales Return, not an expense. A refund undoes a sale, so it reduces income. (See the FAQ: the specs call it an expense.)
- The supplier's share of a processing fee is its own expense entry, dated at settlement. It reports apart from the sale and lands in the right period. (#2075, #2143)
- An overpayment's extra credit isn't booked yet. Left for an accounting decision. (#2499)
- A payment books in the same transaction as the payment. A payment that isn't booked would be a ledger that disagrees with the money. (#2261)
- A correction rebooks in the same transaction too. An edited payment can't be left with its ledger on the old amount. (#2497)
- A bank payment books when it clears. Nothing is booked while the bank might still reject it. (#2568)
Specs
# prefix: IMM
Feature: Invoice Money Movements
Every movement of money against an invoice — money the customer pays, money the
supplier returns, and store credit moving in either direction — is kept on one
record the supplier can review. Movements the supplier recorded by hand can also
be corrected and undone; those the payment processor moved cannot.
Money returned by cash, check or another hand-recorded method is an expense in
the supplier's accounting. Store credit is not money the supplier holds, so it
never reaches the accounting at all — it only moves the customer's credit
balance. Because of that, the same store-credit amount moves the balance in
opposite directions depending on which way the money was travelling: a refund
paid in store credit gives the customer credit, while a payment made with store
credit spends it.
The customer's credit is a single balance per supplier, not a history of
separate grants. So "the credit has already been spent" can only be judged from
what is left, and is exact only when the refund in question is the only credit
the customer holds with that supplier.
Correcting a refund downwards takes the difference back out of that one balance,
so a refund can only shrink by the credit the customer still holds. What is left
is therefore how much can be taken back, never how small the refund may become:
1000.00 returned against 600.00 still held can come down to 400.00 and no lower.
Background:
Given a supplier has issued an invoice to a customer
Rule: Every movement of money on an invoice sits on one record
Scenario: IMM-001 the invoice's money record covers payments, refunds and store credit alike
Given the customer has paid part of the invoice in cash
And the supplier has returned part of the invoice in cash
And part of the invoice was settled with the customer's store credit
When the supplier reviews the money recorded against the invoice
Then the cash payment is listed
And the cash refund is listed
And the store credit settlement is listed
Scenario: IMM-002 each movement identifies what moved, when, how and by whom
Given money has been recorded against the invoice
When the supplier reviews the money recorded against the invoice
Then each movement shows its amount
And each movement shows the date the money moved
And each movement shows the method the money moved by
And each movement shows who recorded it
And each movement states whether the money came in from the customer or went back out to them
Scenario: IMM-003 money recorded against a cancelled order can be reviewed but not changed
Given the order behind the invoice has been cancelled
When the supplier reviews the money recorded against the invoice
Then every movement is listed
And no movement can be corrected
And no movement can be removed
Rule: Only money the supplier recorded by hand can be corrected or removed
Scenario Outline: IMM-004 hand-recorded money can be corrected and removed
Given the supplier returned 50.00 to the customer by <method>
When the supplier reviews the money recorded against the invoice
Then the refund can be corrected
And the refund can be removed
Examples:
| method |
| cash |
| check |
| store credit |
| bank transfer |
| credit card |
| another method |
Scenario Outline: IMM-005 money returned through the payment processor cannot be corrected or removed
Given the supplier returned 50.00 to the customer by <method> through the payment processor
When the supplier reviews the money recorded against the invoice
Then the refund cannot be corrected
And the refund cannot be removed
And the supplier is told to contact the customer or Clipp support instead
Examples:
| method |
| card |
| bank transfer |
Scenario: IMM-006 anyone who can reach the invoice can correct the money on it
Given a member of the supplier's team can reach the invoice
And that member did not record the refund themselves
When that member corrects the refund
Then the correction is accepted
Rule: Removing a refund puts the money back where it came from
Scenario: IMM-007 removing a cash refund restores the amount owed and clears it from the accounting
Given the supplier returned 120.00 to the customer in cash
When the supplier removes that refund
Then the amount recorded as returned on the invoice drops to nothing
And the returned-sale expense for that refund no longer stands in the supplier's accounting
Scenario: IMM-008 removing a store-credit refund takes the credit back from the customer
Given the supplier returned 50.00 to the customer as store credit
And the customer has not spent any of it
When the supplier removes that refund
Then the customer's credit balance with the supplier falls by 50.00
Scenario: IMM-009 store credit never touches the supplier's accounting
Given the supplier returned 500.00 to the customer as store credit
When the supplier removes that refund
Then nothing about that store credit is recorded in the supplier's accounting
And nothing about it was recorded there when the credit was first given
Scenario: IMM-010 removing a payment leaves the invoice's refunds alone
Given the customer paid 1000.00 in cash
And the supplier returned 300.00 to the customer as store credit
When the supplier removes the 1000.00 payment
Then the 300.00 refund is still recorded against the invoice
And the customer's credit balance is unchanged
Rule: Store credit moves in opposite directions depending on which way the money was going
Scenario: IMM-011 a refund paid in store credit gives credit, and removing it takes that credit away
Given the customer's credit balance with the supplier is nothing
When the supplier returns 1000.00 to the customer as store credit
Then the customer's credit balance is 1000.00
When the supplier removes that refund
Then the customer's credit balance is nothing
Scenario: IMM-012 a payment made with store credit spends credit, and removing it gives that credit back
Given the customer's credit balance with the supplier is 500.00
When the customer settles 500.00 of the invoice with store credit
Then the customer's credit balance is nothing
And 500.00 of credit stands against the invoice
When the supplier removes that settlement
Then the customer's credit balance is 500.00
And no credit stands against the invoice
Scenario: IMM-013 an invoice carrying store credit in both directions settles each movement on its own
Given the customer settled 400.00 of the invoice with store credit
And the supplier later returned 250.00 to the customer as store credit
When the supplier removes only the 250.00 refund
Then the customer's credit balance falls by 250.00
And the 400.00 settled with store credit still stands against the invoice
Rule: Credit the customer has already spent cannot be clawed back
Scenario: IMM-014 removing a store-credit refund is refused once the customer has spent the credit
Given the supplier returned 1000.00 to the customer as store credit
And the customer has since spent 400.00 of their credit
When the supplier tries to remove that refund
Then the removal is rejected
And the supplier is told that 400.00 of the credit has already been spent
And the supplier is told the refund can be reduced no lower than 400.00
Scenario: IMM-015 reducing a store-credit refund is refused when the reduction exceeds the credit still held
Given the supplier returned 1000.00 to the customer as store credit
And the customer has since spent 400.00 of their credit
When the supplier tries to reduce that refund to 10.00
Then the correction is rejected
And the supplier is told that 400.00 of the credit has already been spent
Scenario: IMM-016 a refused claw-back changes nothing at all
Given the supplier returned 1000.00 to the customer as store credit
And the customer has since spent 400.00 of their credit
When the supplier tries to remove that refund
Then the refund still stands at 1000.00 against the invoice
And the customer's credit balance is exactly what it was before the attempt
And the customer's credit balance never falls below nothing
Rule: Correcting a refund moves only the difference, never the whole amount again
Scenario Outline: IMM-017 correcting a store-credit refund moves only the difference in credit
Given the supplier returned 100.00 to the customer as store credit
And the customer's credit balance is 100.00
When the supplier corrects that refund to <corrected amount>
Then the customer's credit balance becomes <resulting balance>
Examples:
| corrected amount | resulting balance |
| 150.00 | 150.00 |
| 60.00 | 60.00 |
Scenario: IMM-018 correcting a cash refund restates the accounting and keeps it money going out
Given the supplier returned 100.00 to the customer in cash
When the supplier corrects that refund to 60.00
Then the supplier's accounting shows a single returned-sale expense of 60.00 for that refund
And it is still recorded as money going out to the customer, not money coming in
And the amount recorded as returned on the invoice is 60.00
Scenario Outline: IMM-019 changing the method a refund was paid by moves the money between accounting and credit
Given the supplier returned 100.00 to the customer by <original method>
When the supplier changes that refund's method to <new method>
Then the customer's credit balance ends at <resulting balance>
And the returned-sale expense in the supplier's accounting ends at <accounting result>
Examples:
| original method | new method | resulting balance | accounting result |
| cash | store credit | 100.00 | nothing recorded |
| store credit | cash | nothing | 100.00 going out |
Scenario: IMM-020 correcting only the note of a refund leaves every balance alone
Given the supplier returned 100.00 to the customer as store credit
When the supplier corrects only the note kept with that refund
Then the customer's credit balance is unchanged
And the amount recorded as returned on the invoice is unchanged
Rule: A refund can never return more than was paid, and the suggested amount is what has not yet been returned
Scenario: IMM-021 the suggested full refund is the part of the invoice not yet returned
Given the customer has paid 100.00 against the invoice
And the supplier has already returned 30.00 of it
When the supplier begins returning money on that invoice
Then the suggested full refund is 70.00
Scenario: IMM-022 a refund larger than what is left of the customer's payment is rejected
Given the customer has paid 100.00 against the invoice
And the supplier has already returned 30.00 of it
When the supplier tries to return 80.00 to the customer
Then the refund is rejected, naming 70.00 as the most that can be refunded
And raising an existing refund past that limit is rejected the same way
Rule: Store credit can never settle more of an invoice than it owes
Scenario: IMM-023 settling a single invoice with more store credit than it owes is rejected
Given the invoice still owes 40.00
And the customer's credit balance with the supplier is 100.00
When the supplier tries to settle 60.00 of that invoice with store credit
Then the settlement is rejected
And the supplier is told the invoice only owes 40.00
And the customer's credit balance is unchanged
Scenario: IMM-024 settling several invoices with store credit spends only what those invoices owe
Given the customer has two unpaid invoices from the supplier owing 40.00 and 30.00
And the customer's credit balance with the supplier is 100.00
When the supplier settles both invoices with store credit
Then 70.00 of the customer's credit is spent
And the customer's credit balance is 30.00
And neither invoice is left owing anything
Rule: Credit created by an overpayment is recorded and can be undone
Scenario: IMM-025 paying more than is owed records the surplus as credit given to the customer
Given the customer's unpaid invoices from the supplier owe 70.00 in total
When the customer pays 100.00 in cash against those invoices
Then the invoices are settled
And 30.00 is given to the customer as store credit
And that 30.00 appears in the customer's money history with the supplier as credit given
Scenario: IMM-026 the surplus-credit entry can be undone and takes the credit back
Given 30.00 was given to the customer as store credit from an overpayment
And the customer has not spent it
When the supplier removes that credit entry
Then the customer's credit balance falls by 30.00
Scenario: IMM-027 cancelling an order returns the store credit it consumed and records the return
Given 25.00 of the customer's store credit was used to settle an order
When that order is cancelled
Then the customer's credit balance rises by 25.00
And that 25.00 appears in the customer's money history with the supplier as credit returned
Rule: A payment keyed in by hand on one invoice pays up to what it owes, and more only on request
Scenario: IMM-030 a cash overpayment on one invoice is refused unless the supplier asks for credit
Given the invoice still owes 100.00
When the supplier records 120.00 in cash against it without asking for the extra as store credit
Then the payment is refused, naming the 20.00 that exceeds what is owed
And nothing is recorded
Scenario: IMM-031 asking for the extra as store credit settles the invoice and credits the rest
Given the invoice still owes 100.00
When the supplier records 120.00 in cash and asks for the extra as store credit
Then the invoice is settled by a 100.00 payment
And 20.00 is given to the customer as store credit
Scenario: IMM-032 a corrected payment can never exceed what the invoice owes
Given the customer paid 100.00 in cash and the invoice owes nothing more
When the supplier corrects that payment to 100.01
Then the correction is refused
Scenario: IMM-033 a payment on an invoice that owes nothing is refused, even as store credit
Given the invoice owes nothing
When the supplier records 20.00 in cash and asks for the extra as store credit
Then the payment is refused, saying nothing is due
And the customer's credit balance is unchanged
Scenario: IMM-034 a bank payment still clearing counts against what is owed
Given the invoice owes 100.00
And a 60.00 bank payment against it is still clearing
When the supplier records 50.00 in cash without asking for the extra as store credit
Then the payment is refused, naming the 10.00 that exceeds the 40.00 still owed
Rule: The customer hears about a refund correction only when the supplier asks
Scenario: IMM-028 correcting or removing a refund tells the customer nothing by default
Given the supplier returned 100.00 to the customer in cash
When the supplier removes that refund without asking for the customer to be told
Then the customer is not told about it
Scenario: IMM-029 when the supplier asks, the customer is told in refund wording
Given the supplier returned 100.00 to the customer in cash
When the supplier removes that refund and asks for the customer to be told
Then the customer is told the refund was withdrawn
And the wording refers to the refund, not to a payment they made
# prefix: PFP
Feature: Payment Processing Fee Passthrough
Suppliers normally pass the card (Stripe) processing fee on to the customer at
checkout. A supplier may instead choose to absorb the card fee — the customer is
charged only the balance owed, and the supplier receives less. Absorbing the fee
is configurable for card payments only; other methods are unaffected. PayPal
always charges its convenience fee to the customer and is not configurable.
Whatever part of the processor's fee the customer does not cover is the supplier's
expense and is recorded in their accounting. Bank (ACH) payments never carry a
customer fee, so the supplier bears the whole amount — recorded once the payment
settles, since that is when the processor's charge becomes known.
QA setup note:
The absorb setting has no supplier-facing UI. Toggle it via the
`upsertSupplierSettings` mutation with `skipSurchargeCollection: { card: <bool> }`:
- `card: false` (the default, and the behavior when the setting is absent) →
the customer pays the card fee.
- `card: true` → the supplier absorbs the card fee.
Background:
Given a restaurant owes a balance on an order
Rule: The card processing fee is added to the customer's payment by default
Scenario: PFP-001 customer pays the card processing fee when the supplier has not opted to absorb it
Given the supplier has not chosen to absorb the card processing fee
When the restaurant pays the balance by card
Then the processing fee is added to the amount the restaurant pays
And the invoice shows the processing fee as a separate charge
Rule: A supplier can absorb the card processing fee instead of charging the customer
Scenario: PFP-002 customer is not charged the card processing fee when the supplier absorbs it
Given the supplier has chosen to absorb the card processing fee
When the restaurant pays the balance by card
Then no processing fee is added to the amount the restaurant pays
And the recorded payment equals the balance owed
And the invoice does not show any processing fee
Rule: The processor's fee borne by the supplier is recorded as an expense
Scenario: PFP-006 the supplier-borne card processing fee is recorded as an Other Expense, including when absorbed
Given the restaurant pays a card balance
When the payment is recorded
Then the part of the processor's fee not covered by the customer's fee payment is recorded in the supplier's accounting
And it is recorded as an expense in the dedicated "Other Expense – Transaction Processing Fees" category, separate from the payment income
And it is recorded even when the supplier has chosen to absorb the card fee (the full fee is then the supplier's expense)
And no expense is recorded when the customer's fee payment fully covers the processor's fee
Rule: The processor's fee on a bank payment is recorded once the payment settles
Scenario: PFP-008 the bank payment processing fee is recorded as an expense at settlement
Given the restaurant pays a balance by ACH
And the customer was never charged a processing fee for it
When the bank payment settles
Then the whole processor's fee is recorded in the supplier's accounting as an expense
And it is recorded in the same "Other Expense – Transaction Processing Fees" category used for card
And it is dated the day the payment settled, not the day it was submitted
Scenario: PFP-009 no expense is recorded while a bank payment is still in flight
Given the restaurant has paid a balance by ACH
When the bank payment has not settled yet
Then no processing fee expense is recorded for it
Scenario: PFP-010 a settled bank payment records its fee only once
Given a settled ACH payment whose processing fee has been recorded
When the settlement is processed again
Then the processing fee expense is not recorded a second time
Rule: The supplier sees one fee amount; its parts stay internal
Scenario: PFP-011 the recorded fee is the total the supplier was charged
Given a supplier on a contract with a platform fee
When a payment's processing fee is recorded
Then the expense is the total charged, covering both the processor's fee and Clipp's platform fee
And the supplier is never shown how that total splits between the two
Scenario: PFP-012 the split is kept for Clipp's own reporting
When a payment's processing fee is recorded
Then the processor's charge and Clipp's platform fee are stored separately against the payment
And they are not published on the API the supplier reads
Rule: Payment methods that never carry a card processing fee are unaffected
Scenario Outline: PFP-004 the absorb setting has no effect on fee-free payment methods
Given the restaurant pays the balance by <method>
When the payment is completed
Then no processing fee is added to the amount the restaurant pays, regardless of the supplier's absorb setting
Examples:
| method |
| ACH |
| cash |
| check |
Rule: PayPal always charges its convenience fee to the customer
Scenario: PFP-007 the PayPal convenience fee is always added and is not configurable
Given the restaurant pays the balance by PayPal
When the restaurant pays the balance
Then the convenience fee is added to the amount the restaurant pays
And the absorb setting has no effect on the PayPal convenience fee
Rule: Customers are only warned about a fee they will actually be charged
Scenario Outline: PFP-005 the card fee disclaimer matches whether the customer will be charged
Given the supplier has <absorb setting> for the card processing fee
When the restaurant reviews payment options for card
Then the processing fee disclaimer is <visibility>
Examples:
| absorb setting | visibility |
| chosen to absorb | hidden |
| not chosen to absorb | shown |
Known limitations
- An overpayment's store credit part isn't booked.
- A payment is refused if the supplier has no category for its method.
- The cancellation refund's entry is written after the cancellation saves. If that step fails, the refund is saved and the error is only logged. The missing entry then has to be added by hand.
- Bookkeeping entries can be edited by hand on the Bookkeeping page. Doing that doesn't change the payment, and the next correction of that payment reverses whatever the entry says at that point (verify).
FAQ
Why does my Bookkeeping show the same payment three times? You corrected it once. The original, its "- Reversal" and the new entry are all listed, and only the newest counts. See Edit a cash payment from $100 to $60.
Why isn't the store credit I gave in Bookkeeping? Store credit never reaches the books, given or spent. See Pay with store credit.
I got $300 cash for a $250 invoice, but my drawer account only shows $250. The extra $50 became store credit, which isn't booked. See Overpayment issued as store credit.
Why is there a tiny $0.09 processing fee on a card payment the customer paid the fee for? The customer's 2.9% + 30¢ is worked out on the invoice amount, but Stripe charges its rate on the larger total, fee included. The few cents in between are yours. See Processing fees.
Why are refunds under Income and not Expense? A refund is booked as negative income in Sales Return, so it reduces your sales. The specs describe it as a "returned-sale expense"; the code is the source of truth.
A customer's bank payment is Processing. Why isn't it in my income yet? A bank payment is booked when the bank settles it, and dated that day. See A bank (ACH) payment online.