- Shipped
- November 12, 2026 at 3:27 AM UTC
- Author
- Kamo
- Commit
- 4a67c44
Accept Card Payments (Settings > Account > Receivables, same View/Manage Receivables rights, owner implicit, never while impersonating): GET/PUT **************** and POST **************** relayed to BillingService, which talks to Stripe. Off until the organization connects; nothing on by default. The public invoice page: payOnline is InvoiceCardOffer - the organization takes cards, something is due, and a retail order's invoice only while its order is unpaid. Pay by Card (/public/invoices/pay, after the platform's own subscription invoices) opens a Checkout page on the organization's account for what is due and returns to the same invoice link. Recording, once (claimApply in the same transaction as the write), from BillingService's Connect webhook, the customer's return, or a 5-minute catch-up sweep: a work order's invoice through InvoicingService's online-payments (CARD, Stripe reference, the one ledger); a retail order's invoice on the ORDER (Paid with a CARD transaction) which then settles its invoice - never a second payment. Money that arrives where nothing was owed is flagged for a refund. Staff hear about it (INVOICE_PAID_ONLINE, View Receivables holders); the customer gets a receipt only when the organization turned Email Receipts on, and a test payment's receipt only to @kamocrm.com. Reads run in their own transactions so open-in-view never hands back a stale page or balance.
