Let clients pay the card fee - turn on Clients pay the card fee on Stripe in Admin > Payment Providers with Stripe's percent and fixed rate, and each card payment in the client portal, through an invoice's link, by autopay or from Charge Saved Card is grossed up so Stripe's fee comes out of it, with one fee per payment shared over its invoices; the fee is shown before paying (Pay invoices, checkout, the guest pay page, invoice pages, autopay and the Charge Saved Card window) and goes on each invoice as a Card Fee line with no tax when the payment is booked, carried in the PaymentIntent's itflow_fees metadata and checked against the amount received to the cent; a client can be let off it with No card fee on their Billing tab, refunding a card payment takes its Card Fee line back off, autopay and Charge Saved Card now compare cents instead of whole dollars, database 3.5.6 adds the provider and client columns, changelog updated

This commit is contained in:
johnnyq
2026-11-05 12:47:06 -05:00
parent 5918cc59d4
commit cf2c9c2d9b
27 changed files with 615 additions and 94 deletions

4
db.sql
View File

@@ -893,6 +893,7 @@ CREATE TABLE `clients` (
`client_tax_exempt` tinyint(1) NOT NULL DEFAULT 0,
`client_tax_exempt_number` varchar(200) DEFAULT NULL,
`client_tax_exempt_expires` date DEFAULT NULL,
`client_card_fee_exempt` tinyint(1) NOT NULL DEFAULT 0,
`client_abbreviation` varchar(10) DEFAULT NULL,
`client_notes` text DEFAULT NULL,
`client_favorite` tinyint(1) NOT NULL DEFAULT 0,
@@ -2164,6 +2165,9 @@ CREATE TABLE `payment_providers` (
`payment_provider_account` int(11) NOT NULL,
`payment_provider_expense_vendor` int(11) NOT NULL DEFAULT 0,
`payment_provider_expense_category` int(11) NOT NULL DEFAULT 0,
`payment_provider_card_fee` tinyint(1) NOT NULL DEFAULT 0,
`payment_provider_card_fee_percent` decimal(5,2) NOT NULL DEFAULT 0.00,
`payment_provider_card_fee_fixed` decimal(15,2) NOT NULL DEFAULT 0.00,
`payment_provider_created_at` datetime NOT NULL DEFAULT current_timestamp(),
`payment_provider_updated_at` datetime DEFAULT NULL ON UPDATE current_timestamp(),
PRIMARY KEY (`payment_provider_id`)