ServiceFlow Pro Docs
Invoices & Payments

Stripe Financing (Affirm)

Buy-now-pay-later on estimates and invoices via Stripe—pre-qual, payment links, and staff financing status.
5 min read

Stripe Financing (Affirm)

Overview

Stripe Financing (Affirm) lets customers check financing options on estimates and pay invoices with buy-now-pay-later at Stripe checkout. ServiceFlow integrates Affirm through Stripe—there is no separate Affirm merchant key in the office app. When eligible, customers see Affirm messaging on estimate and invoice surfaces and can pre-qualify before approving work or paying a balance.
Stripe-only: Affirm is not available when Helcim is the active card processor. Helcim businesses do not see financing in the UI or API responses.

How to access

WhoWhere
Admin setupSettings → Payments → Stripe ConfigurationEnable Affirm financing toggle
StaffEstimate and invoice detail pages show Financing status when Affirm is enabled
CustomersCustomer portal estimate/invoice pages, public estimate PDF, payment method select, Stripe checkout
Guide path: Settings → Payments → Stripe → Affirm (within Stripe Configuration tab).

What you can do today

  • Enable or disable Affirm per business when Stripe is active
  • Set a minimum amount for Affirm eligibility (default $50 USD)
  • Show pre-qualification on estimate detail, public estimate PDF, and invoice pay flows
  • Display financing status on staff estimate/invoice records (pre-approved amount, expiry, declined, not started)
  • Record payments when Affirm checkout completes via Stripe and Affirm webhooks
  • Offer Affirm alongside cards and ACH on Stripe checkout when amount meets the minimum
  • Include per-option Affirm-only payment links in estimate email/SMS templates when an estimate is sent (Stripe active, Affirm enabled, option total ≥ minimum)
  • Send financing link from estimate detail — staff action to email/SMS Affirm checkout links without re-sending the full estimate
  • Good / Better / Best estimates get separate Affirm links per option (Option 1, 2, 3 merge tags and PDF buttons)

Estimate email & SMS merge tags

When staff send an estimate, ServiceFlow generates Affirm-only Stripe Payment Links matched to the estimate layout:
  • Single-option estimates (Good/Better/Best disabled): one link via {{estimate.financingLink}} / {{estimate.financingButton}}
  • Multi-option estimates: up to three links via {{estimate.financingLinkOption1}}, Option2, Option3 (and matching buttons)
Links also appear as Request Financing buttons on the public estimate PDF and staff PDF preview when Affirm is eligible.
Merge tags are populated at send time (and when loading PDFs); tags are empty when Affirm is disabled, Stripe is not the active processor, or the amount is below the minimum.
TagUse
{{estimate.financingLink}}Single-option short Affirm URL
{{estimate.financingButton}}Single-option styled HTML button (email)
{{estimate.financingAmount}}Single-option total used for the link
{{estimate.financingLinkOption1}}Short URL for Option 1 Affirm checkout
{{estimate.financingLinkOption2}}Short URL for Option 2
{{estimate.financingLinkOption3}}Short URL for Option 3
{{estimate.financingButtonOption1}}Styled HTML button (email only)
{{estimate.financingButtonOption2}}Styled HTML button (email only)
{{estimate.financingButtonOption3}}Styled HTML button (email only)
{{estimate.financingAmountOption1}}Option 1 total used for the link
{{estimate.financingAmountOption2}}Option 2 total
{{estimate.financingAmountOption3}}Option 3 total
Default estimate_sent email and SMS templates include financing CTAs. Custom templates keep existing copy until you add these tags in Settings → Email Templates (Data Tags sidebar).
Checkout from these links records financing application status on the estimate for staff visibility.

Prerequisites

Setup path: Settings → Payments → Stripe Configuration (/settings/payments?tab=configuration)
All of the following must be true:
  1. Stripe is the active card processor — not Helcim. See Stripe Payments.
  2. Affirm enabled in Stripe Dashboard under Settings → Payment methods; confirm your business category is eligible with Affirm.
  3. Enable Affirm financing toggled on in ServiceFlow Stripe settings.
  4. Affirm Merchant Portal webhook (production recommended) pointing at your API:
    https://<your-api-host>/api/webhooks/affirm
    
    Set AFFIRM_WEBHOOK_SECRET in API environment for signature verification.
  5. financing_applications database migration applied on the API before go-live.
  6. Deploy API, customer-portal, and web apps after enabling the feature.
Optional: configure minimum amount override in Stripe settings (Minimum amount field) or via business settings integrations.stripe.affirmMinAmount.

Step-by-step

1. Enable Affirm in Stripe

  1. Open Stripe Dashboard → Settings → Payment methods.
  2. Enable Affirm and complete any Stripe/Affirm onboarding prompts.
  3. Confirm your MCC/business type is supported.

2. Enable Affirm in ServiceFlow

  1. Go to Settings → Payments → Stripe Configuration.
  2. Confirm Stripe is configured and is the active processor (not Helcim).
  3. Toggle Enable Affirm financing on.
  4. Set Minimum amount if you want something other than $50.
  5. Save configuration.

3. Register Affirm webhooks

  1. In the Affirm Merchant Portal (not Stripe), add webhook URL: https://<your-api-host>/api/webhooks/affirm
  2. Copy the HMAC secret into API env as AFFIRM_WEBHOOK_SECRET.
  3. Affirm sends pre-qual decisions, checkout confirmed, and checkout-not-approved events; ServiceFlow updates financing application records accordingly.

4. Test the customer flow

  1. Create or open an estimate above the minimum amount for a test customer.
  2. Send the estimate or open the public estimate PDF link.
  3. Customer clicks Check your financing options (or equivalent Affirm block).
  4. Complete pre-qual; staff should see Financing status on the estimate.
  5. After approval, pay deposit or invoice via checkout and confirm Affirm appears as a payment method when eligible.

5. Monitor on staff records

  • Estimate detail and invoice detail show financing status when Affirm is enabled.
  • Stripe payment_intent.succeeded / checkout webhooks remain a backup ledger path when Affirm settles through Stripe.

Current limitations

  • Helcim-only businesses — no Affirm UI or API availability
  • Mobile field app — Affirm not in scope for v1 mobile flows
  • Recurring / subscription invoices — not supported with Affirm in v1
  • Internal payment plans — separate from Affirm; not replaced by this integration
  • Some pre-qual payloads may require Affirm Key/Enterprise tier — confirm with your Affirm CSM
  • Affirm eligibility and approved amounts are determined by Affirm, not ServiceFlow

Roadmap

  • Mobile customer and field surfaces for financing visibility
  • Broader invoice types (recurring) if Affirm and Stripe support expands
  • Helcim-side financing only if a separate processor integration is added (not planned for v1)

Related features