Stripe Integration

Accept credit card and ACH payments from customers through Stripe-powered checkout links.

Overview

The Stripe integration enables online payment collection for invoices sent through Forz. When a customer receives an invoice via the Customer Portal, they can pay with a credit card or other Stripe-supported payment method. Stripe processes the payment and notifies Forz through webhooks to update the invoice status automatically.

Before You Begin

Prerequisites:

  1. You have the Admin role in Forz. The Integration module is enabled (Settings > Modules).

  2. You have a Stripe account with payment processing activated. Your Stripe webhook endpoint is configured to point to your Forz instance.

Connecting Stripe

  1. Click Settings in the sidebar navigation.

  1. Click the Integrations tab.

  1. Click Connect on the Stripe card.

  2. Follow the Stripe authorization flow to grant Forz access.

  3. Verify the connection status shows "Connected."

Expected result: Forz displays a "Connected" badge on the Stripe card. Invoices sent through the Customer Portal now include a "Pay Now" button.

How Payment Processing Works

When a customer pays an invoice through Stripe:

  • Customer clicks "Pay Now" on the invoice in the Customer Portal.

  • Stripe Checkout opens with the invoice amount and accepted payment methods.

  • Customer completes payment by entering their card details.

  • Stripe sends a webhook to Forz confirming the payment.

  • Forz updates the invoice status to "Paid" or "Partially Paid".

Note: Stripe webhook processing is handled automatically. Forz listens for payment events and updates invoice records without manual intervention.

Webhook Events

Forz processes the following Stripe webhook events:

Event

Forz Action

checkout.session.completed

Marks the invoice as paid and records the payment.

payment_intent.succeeded

Confirms payment was captured.

payment_intent.payment_failed

Logs the failure for support review.

Common Scenarios

Plumbing company collecting payment after a service call

A plumber completes a drain cleaning job and the dispatcher creates an invoice for $275. The invoice is sent to the customer through the Customer Portal. The customer clicks "Pay Now," enters their Visa card details in Stripe Checkout, and pays the full amount. Within seconds, Forz marks the invoice as "Paid" and the dispatcher sees the updated status on the job.

HVAC company handling a partial payment

An HVAC company invoices a commercial customer $4,800 for a rooftop unit replacement. The customer makes a partial payment of $2,400 through Stripe. Forz updates the invoice status to "Partially Paid" and shows the remaining balance of $2,400. The customer pays the remaining balance two weeks later, and Forz marks the invoice as "Paid."

Troubleshooting

Problem

Solution

"Customer does not see Pay Now button"

Verify Stripe is connected in Settings > Integrations. Confirm the invoice was sent through the Customer Portal (not just emailed as a PDF).

"Payment completed in Stripe but invoice still shows Draft"

Check that the Stripe webhook endpoint is correctly configured. Navigate to your Stripe Dashboard > Developers > Webhooks and verify the endpoint URL and event subscriptions.

"Webhook delivery failing"

Review the Stripe Dashboard webhook logs for error details. Common causes: Forz URL is unreachable, SSL certificate issue, or server returning 500 errors.