Skip to content
Fifi CRMHelp

Online payments (Stripe)

Customers can pay your invoices by card, or from a US bank account (ACH) when your Stripe account allows it, from the invoice link. You connect your own Stripe account: the money goes straight from the customer's card to your Stripe account (and from there to your bank). Fifi never touches the money and takes no fee on it; Stripe's own fees apply, and they're yours. Fifi never sees or stores a card number: the customer types it on Stripe's page, not Fifi's.

Coming soon. Online payments turn on once Fifi's Stripe setup is finished. Until then, Settings → Invoicing says "Online payments: coming soon", invoices have no Pay button, and everything works as before (you record payments by hand; see Invoices).

It needs the Invoicing module (Pro and Business plans), a US Stripe account that takes US dollars, and an owner or admin to connect it.

Who can do it:

TaskOwnerAdminMember
Connect, refresh or disconnect Stripe (Settings → Invoicing)YesYesNo
Pay now (anyone with the invoice link; no sign-in)YesYesYes
See that an invoice was paid online, its fee and its cardYesYesYes
"View in Stripe" links on paymentsYesYesNo

1. Connect Stripe

Settings → Invoicing has an Online payments card.

  1. Click Connect Stripe. Fifi sends you to Stripe, where you sign in to your Stripe account or make one. (Fifi never creates a Stripe account for you.)
  2. Stripe asks if you'll let Fifi take payments for you. Say yes; you're sent back to Fifi.
  3. The card shows your account (as acct_…1234), whether Payments, Payouts and Bank payments (ACH) are on, who connected it and when. If Payments says "Off: finish setup in Stripe", click Open Stripe and finish what it asks ("Finish setting up in Stripe before customers can pay online."); customers can't pay online until it's on. Payouts say "Off: finish setup in Stripe" too, and Bank payments (ACH) say "Off: turn it on in Stripe".

Refresh reads your Stripe account again (Fifi also hears about changes from Stripe within a minute or so). Open Stripe takes you to your Stripe dashboard.

While Fifi is in test mode (the staging site; nothing is real), the card says Test mode: no real money, and the Pay page tells the person paying to use Stripe's test card.

If something goes wrong, the card says why in words:

MessageWhat it means
You cancelled at StripeNothing was connected.
That connection didn't start here or took too longTry Connect Stripe again (the link works for 10 minutes).
You switched workspace or account while connectingStart again from the workspace you want to connect.
This Stripe account is connected to another Fifi workspaceA Stripe account can be live in one workspace at a time. Disconnect it there first.
Fifi can take payments only for US Stripe accounts that use US dollarsOther accounts aren't supported yet.
This workspace already has a Stripe account connectedDisconnect it first to connect another.
Stripe didn't answerNothing was connected. Try again.

Sample workspaces can't connect Stripe (they show the look with made-up online payments).

2. What your customer sees

When an invoice is Sent or Partially paid, has a balance of at least $0.50, and Stripe is connected with payments on, the customer link (/v/…) shows Pay $480.00 (the balance, worked out by Fifi when they click: nothing the customer's browser says can change the amount) and "Secure payment by Stripe. Your card details go to Stripe, never to your business or Fifi."

  • Clicking Pay takes them to Stripe's payment page (cards, Apple Pay and Google Pay). Stripe sends them its own receipt to the email on the invoice.
  • Coming back, they see Payment received. Thank you! If Stripe is a little slow to confirm, they see "We're confirming your payment. This page will show it shortly." If they cancelled, "Payment cancelled. Nothing was charged."
  • The invoice and reminder emails say View and pay (instead of View invoice) and "Pay online by card from the invoice page" when paying online is available. They always link to the invoice page, never to Stripe directly.
  • If the balance can't be paid online (under $0.50 or over $999,999.99), or Stripe isn't connected, there's no button and the payment instructions on the invoice apply as before.

If the balance changes while they pay. Say a customer starts paying $100, and meanwhile you record a $20 cash payment. Fifi ends the open payment page when you record it. If they finish it anyway, Fifi records what fits ($80), refunds the extra $20 to their card automatically, makes you one task ("INV-1042 was overpaid online: $20.00 was refunded to the customer automatically") and tells the customer "This invoice's balance changed while you paid; $20.00 was refunded to your card." When you record a payment by hand while a customer has a payment open, the dialog warns you: "A customer started paying online at 10:42."

3. What you see

Online payments appear on the invoice like any payment, automatically, within seconds:

  • The Payments section shows Online (Stripe), the card's brand and last four digits ("Visa ending 4242"), Stripe's fee ("Fee $14.22") and "by Stripe". The invoice becomes Paid, and the customer's timeline says "Payment received online: $480.00 for INV-1042 (Stripe)". Webhooks and the API see it like any payment (the API's method is online, with processor, processor_payment_id, fee_cents and dispute_status).
  • Invoices → Payments has an Online (Stripe) method filter and, when there are fees, Fees and Net after fees totals. Exports carry the processor, Stripe's ids, the fee and any dispute.
  • Owners and admins get a View in Stripe link on each online payment.
  • You can't void an online payment or record it by hand: it comes from Stripe, and it's undone in Stripe.

4. Refunds

Refund in your Stripe dashboard. Fifi records each refund on the invoice by itself ("Refund in Stripe"): it reduces what's paid and reopens the balance. A partial refund, several refunds, and a refund that later fails or is cancelled (its row is voided) all work. Fifi has no "refund" button for online payments: Refund in Fifi is still there for money you gave back some other way (cash), and is allowed on an invoice that was paid online.

5. Disputes (chargebacks)

If a customer's bank disputes a payment, Fifi flags it:

  • The payment shows Disputed · needs response (an icon and words) on the invoice and in the payments list, and the customer's timeline says so.
  • You get one task, due on Stripe's evidence deadline: "Respond to a Stripe dispute on INV-1042 by Nov 3: open Stripe". It goes to the person who connected Stripe (if they're still an owner or admin), otherwise to the oldest owner. Responding is done in Stripe (Fifi doesn't submit evidence).
  • When Stripe takes the disputed money, Fifi records a Chargeback (a refund of the amount, with Stripe's dispute fee) and the invoice's balance reopens.
  • If you win, Stripe gives the money back and Fifi voids the chargeback ("Dispute won: Stripe returned the funds"). If you lose, it stays.

6. Disconnecting

Disconnect (Settings → Invoicing → Online payments) asks you to confirm: "Customers won't be able to pay online. Payments already recorded stay." Fifi ends any payment page that's open, tells Stripe to disconnect, and Pay disappears at once. If Stripe doesn't answer, nothing changes; try again.

If you remove Fifi inside Stripe, Fifi finds out and does the same, and makes you a task ("Stripe was disconnected, so customers can't pay online until you reconnect it in Settings → Invoicing"). If a customer was in the middle of paying when that happened, the money still reaches your Stripe account but Fifi can't see it: record it by hand. When a workspace is deleted, its Stripe connection is removed first. Reconnecting later is a new connection; the old payments stay as they were.

7. Good to know

  • Fees and payouts are Stripe's. Fifi shows the fee Stripe reports; payouts to your bank are in your Stripe dashboard.
  • Receipts are Stripe's (your Stripe settings decide). Fifi doesn't send a receipt email of its own.
  • Not included yet: paying a part of the invoice, saving a card for later or automatic payments, adding a surcharge, a Fifi fee on payments, accounts outside the US or not in US dollars, and payments you take in Stripe outside an invoice's Pay page (Fifi only records payments made through its own Pay button).
  • Bank (ACH) payments are in section 8.
  • Payments are checked against Stripe's own records, every hour and every day, so a missed notice is caught.
  • Reset link (on an invoice) ends the old customer link, and with it any payment page a customer has open from it: they come back to the new link and press Pay again. A payment already made is still recorded.
  • If a customer is charged and Fifi can't record it (the amount or currency Stripe took isn't what Fifi asked for), Fifi makes you a task: "A customer paid INV-1042 in Stripe but Fifi couldn't record it: check it in Stripe and record it by hand". If Fifi can't refund an overpayment, a task asks you to do it in Stripe, and the customer is told you'll return it.

8. Bank account (ACH) payments

Besides cards, customers can pay from a US bank account (ACH Direct Debit) when your Stripe account has that turned on. It is usually much cheaper than a card for large invoices.

Turning it on. It is a setting in Stripe, not in Fifi: in your Stripe dashboard turn on US bank account (ACH Direct Debit) payments. The Online payments card then shows Bank payments (ACH): On (it says Off: turn it on in Stripe until then; press Refresh if you've just changed it). Fifi never turns it on for you, and if Stripe stops allowing it Fifi stops offering it.

What the customer sees. The Pay section says "Pay by card, or from a US bank account (ACH). A bank payment takes a few business days to clear." On Stripe's page they pick the bank account and sign in to their bank (or confirm two small test deposits). Back on the invoice they see Your bank payment of $480.00 is processing (usually up to 4 business days), and there's no Pay button meanwhile, so nobody pays twice. When it clears, the invoice shows as paid.

What you see.

  • While it's on its way the invoice shows a Bank payment processing badge (also in the invoices list and on the customer's page) and a note, "Bank payment processing since Oct 4". Nothing is recorded yet: the invoice is still unpaid, and still shows Overdue if it's past due.
  • You can't void the invoice meanwhile ("Wait until the bank payment clears or fails"), and Fifi sends no reminder (by hand or automatic) while a bank payment is processing. Recording a payment by hand is allowed and warns you; if the bank payment then clears too, Fifi records what fits and refunds the rest to the customer's bank account automatically (and makes you a task).
  • When it clears, Fifi records the payment ("Online (Stripe)", "Bank account ending 6789", Stripe's fee), dated the day it cleared.
  • When it fails (not enough money in the account, a closed account, and so on), you get one task, "A bank payment of $480.00 for INV-1042 failed (Not enough money in the account): the customer can pay again from the invoice link". The customer's page says it didn't go through, why, and that nothing was charged, and the Pay button is back. Reminders carry on as usual.
  • A bank payment can be returned by the customer's bank for weeks after it cleared (up to 60 days: most often "unauthorized"). Stripe reports that as a dispute: Fifi records a Chargeback, the invoice's balance reopens, and you get a task. If Stripe tells Fifi that a recorded bank payment did not hold (a failed charge), it records Bank payment returned the same way, and the customer's page no longer says "Payment received": it says the payment was returned and offers Pay again. Either way the money is only taken back once.
  • Refunds of a bank payment are made in Stripe like any other. A bank refund is pending for a few days; Fifi records it at once, and voids the row if it later fails. The same goes for the automatic refund of an overpayment: it is pending for days, the customer is told it "is being refunded to your bank account", and if the bank later rejects it (a closed account, say) the money comes back to your Stripe balance and Fifi makes you one task, "Refund $20.00 to a customer who overpaid INV-1042: Stripe's automatic refund failed, so do it in Stripe".
  • Disconnecting Stripe is refused while a bank payment is processing, because after you disconnect Fifi can't see it clear: wait for it to clear or fail. (If you remove Fifi inside Stripe meanwhile, Fifi ends the waiting payment and makes a task asking you to record it by hand if it clears.)