Stripe Payments — Setup Runbook

Scoro-native Stripe + ACH · enabling online invoice payment on Vancomm invoices, verified end-to-end in test mode before go-live.

Feature: spec 018-stripe-payments  ·  Decision: VAN-D099 (QBO Payments → Stripe pivot)  ·  Created 2026-06-04
Goal: Enable online invoice payment (card + wallet + ACH) on Vancomm invoices via Scoro's native Stripe integration.

Sources — every step is doc-verified:

⚠️ The QBO lesson

A toggle that looks on is not proof. Several specifics (exact USD Scoro fee, payment-method toggles, the regular-invoice-only field, USD-invoice support) are only confirmable once Stripe is connected — this runbook verifies each with a real test charge. Do not skip Step 5/6.

0 PrerequisitesBefore you touch anything
⚠️ VERIFY LIVE: the connection lives under Settings → Site settings → Integrations; confirm it behaves as expected for the entity you intend to collect under. (Templates are site-shared per VAN-D044; the default-template setting is per-entity.)
1 Connect Stripe to ScoroScoro docs §3
  1. Scoro → Settings → Site settings → Integrations → Stripe.
  2. Click Connect Stripe → connect the client's existing Stripe account (or create one).
  3. Confirm the connection shows active (live UI telemetry should flip stripe_is_active 0 → 1).
Reversible: you can disconnect anytime. Invoices already sent with a pay-link keep the link even after disconnect.
2 Enable ACH (bank debits)Scoro docs §4.1
  1. In the now-visible Stripe config screen, switch on the "Enable bank debits" toggle. ← this is what turns on ACH.
  2. VERIFY LIVE: confirm the bank-debit option presented is US ACH (us_bank_account), not SEPA/other — Stripe selects the local method by account country/currency; for a US/USD account it should be ACH.
  3. Stripe side: confirm ACH Direct Debit is active on the account (Stripe Dashboard → Settings → Payment methods). Usually on by default for US/USD accounts.
3 Add the Pay-now buttons to templatesScoro docs §4.2–4.3

⚠️ SNAPSHOT FIRST (Principle IX + snapshot rule)

Editing invoice templates changes them for all users. Capture .data/snapshots/pdf-templates/2026-06-04-stripe-paylink/ (JSON dump + screenshots + revert note) and commit it BEFORE editing. Surface = pdf-templates.

  1. Invoice PDF templates: select the invoice templates to update → Add the payment link (auto-placed after the price table), OR insert manually: dynamic field → select InvoiceStripe payment button group (with bank debits on, this renders Card + Wallet + Bank; without it, only Card + Wallet).
  2. Invoice email templates: repeat per template (emails are updated one at a time).
  3. Only apply to regular invoice templates — the pay-link is not available on prepayment invoices or quotes (verified). Deposits stay on the manual flow (FR-009/OD-1a) unless Path C is built.
4 Verify-at-connect checklistCloses the QBO-lesson gaps

Once connected, confirm each LIVE (these were not confirmable while disconnected):

5 Test charge (test mode) — prove the loopStripe docs §5
  1. Issue a test regular invoice (USD) with the pay-now field, in Stripe test mode.
  2. Pay it two ways using Stripe test instruments:
    • Card (test card) → confirm Scoro auto-marks the invoice paid and adds the processing-fee line.
    • ACH (test bank) → confirm the bank-debit option appears, completes, and reconciles. (ACH settles ~4 business days; in test mode it confirms per Stripe's test behavior.)
  3. Confirm the fee shows (add the Payment fee column via View → Data columns to see it).
6 ⚠️ MANDATORY dedup test (OD-5)Before ANY go-live

The risk: a payment double-counts in QBO (Scoro marks it paid and a Stripe→QBO path posts it again).

  1. Confirm the Scoro↔QBO connector state and directions (Settings → Integrations → QuickBooks). Target architecture (OD-5): Invoices = From Scoro (keep); NO per-charge Stripe→QBO income connector; paid-status via the Scoro lane; Stripe→QBO only at payout/fee level. Disable Receipts = To Scoro if it would double-post.
  2. Run a test-mode payment end-to-end and confirm in QBO that the invoice + payment appear exactly once — no duplicate sale.
  3. Do not go live until this passes. (If using the first-party QuickBooks↔Stripe connector for payouts/fees, keep its "Auto-add" OFF + require manual match-to-invoice — it imports income as sales receipts that can duplicate the Scoro-created invoice. See stripe-qbo-connector-verify-2026-06-04.md.)
7 Go-liveTest → live cutover

Reference

Fees (US standard; confirm USD Scoro fee live)

MethodStripe+ Scoro≈ per $4,900 invoice
Card / wallet2.9% + 30¢0.2–0.4%~$155
ACH bank debit0.8% ($5 cap)0.4% (~$5 cap)~$10

Payout: US rolling T+2; first payout delayed 7–14 days.  Refund: original % fee not returned.  Dispute: up to ~$30 if contested and lost.  Wallets: require Stripe domain registration.

Rollback

Disconnect Stripe (Settings → Integrations) + revert templates from the Step-3 snapshot. Already-sent invoices retain their link.

Open items (not blockers to setup, but track)