Nine Minds Logo

Navigation

14.16. Accept Online MSP Invoice Payments via Stripe Checkout (Enterprise Edition)

Connect AlgaPSA Enterprise Edition to Stripe Checkout so MSP clients can pay finalized invoices through a payment link, with automatic webhook reconciliation and Client Portal payment flows.

14.16. Accept Online MSP Invoice Payments via Stripe Checkout (Enterprise Edition)
Connect AlgaPSA Enterprise Edition to Stripe Checkout so MSP clients can pay finalized invoices through a payment link, with automatic webhook reconciliation and Client Portal payment flows.
14. Billing and ContractsUpdated: 5/12/2026

Online invoice payments let your MSP clients pay finalized invoices directly through a hosted Stripe Checkout session. Once a tenant connects Stripe, AlgaPSA can attach payment links to invoice emails, surface a Pay button inside the Client Portal, and reconcile each completed payment back to the invoice through Stripe webhooks.

Online payments are an Enterprise Edition feature. Open-source tenants see an "Enterprise Feature" placeholder in the Payments tab and cannot connect Stripe.

How online payments work end to end

  1. A billing admin finalizes an invoice for the client.
  2. The client receives a payment link in the invoice email or opens the invoice from the Client Portal.
  3. Clicking Pay opens a Stripe Checkout session for that invoice.
  4. The client completes payment with their preferred method on Stripe.
  5. Stripe sends a webhook event back to AlgaPSA confirming the payment.
  6. AlgaPSA updates the invoice status to Paid or Partially Paid based on the amount received.
  7. The client lands on a payment success confirmation page in the portal.

Edition gating

EditionWhat you see
Enterprise (EE)Full Stripe connection form, payment settings, webhook auto-registration, Client Portal Pay button, and webhook reconciliation.
Open Source (OSS)Settings > Billing > Payments shows an "Enterprise Feature" placeholder. Stripe cannot be connected and no payment link is offered to clients.

If your tenant is running the OSS build, payments must be recorded manually against finalized invoices (see "Record payments received outside Stripe" below). For tenant-level billing context such as currency, numbering, and zero-dollar invoices, see 14.2. Tenant Billing Settings.

Connect Stripe to your tenant

Open Settings > Billing > Payments as a billing admin.

  1. Click Connect to open the Stripe connection form.
  2. Enter your Stripe Secret Key. The key must start with sk_. AlgaPSA validates the prefix before submitting.
  3. Enter your Stripe Publishable Key. The key must start with pk_. For production tenants, use restricted keys with the minimum permissions needed for Checkout and webhook delivery.
  4. Click Connect. AlgaPSA validates the credentials with Stripe and automatically registers the webhook endpoint your tenant needs to receive payment events.
  5. Once connected, click Test Connection to confirm the integration is reachable.

When the connection is healthy, the Payments tab shows a connected banner with the publishable key prefix and a list of webhook events Stripe is delivering to AlgaPSA.

To remove the integration, click Disconnect and confirm in the dialog. Disconnecting stops new payment links from being generated and prevents future Stripe webhooks from updating invoices.

Configure the payment link expiration

Each Stripe Checkout link has a configurable lifetime. Set it under Settings > Billing > Payments in the Payment Settings card.

OptionDuration
24 hours1 day
48 hours2 days
72 hours3 days
1 week7 days
2 weeks14 days
30 days30 days
CustomEnter a specific number of hours, up to 720.

Choose a duration that matches how quickly your clients typically pay. Longer windows reduce the number of expired-link follow-ups your billing team has to handle, while shorter windows keep links fresh and force a regeneration if an invoice is disputed or revised.

The same panel also exposes two switches:

  • Include payment links in invoice emails: when on, finalized invoice emails include a Pay link that opens Stripe Checkout.
  • Send payment confirmations: when on, AlgaPSA sends an email to the client after Stripe confirms a successful payment.

Click Save after changing any of these settings.

Webhook configuration and recovery

AlgaPSA registers the required Stripe webhook automatically when you connect, so billing admins do not need to paste webhook URLs into the Stripe dashboard.

If webhook events stop arriving — for example after a server URL change, a Stripe key rotation, or a tenant migration — the Payments tab shows a webhook warning state. Click Retry Webhook Configuration to re-register the endpoint and confirm Stripe is delivering events again. The status panel will return to a green confirmed state when the events are flowing.

What clients see in the Client Portal

Clients with portal access see a billing experience scoped to their account.

PagePurpose
Billing OverviewSummary of recent billing activity and account status.
InvoicesList of finalized invoices with payment status badges.
Invoice DetailFull invoice with line items, totals, and a Pay button when the invoice can still be paid.
Payment SuccessConfirmation page shown after Stripe completes a payment.

The Client Portal only lists finalized invoices. Drafts are intentionally hidden so clients never see in-progress billing — see 14.13. Managing Draft and Finalized Invoices for the lifecycle.

The Pay button is only shown when an invoice is finalized and not already fully paid or covered by credit. Clicking Pay opens the Stripe Checkout session for that invoice; on completion the client is redirected to the payment success page.

Reconciliation back to the invoice

When Stripe confirms payment, AlgaPSA reads the webhook event and updates the invoice automatically:

  • A payment record is created against the invoice for the amount Stripe captured.
  • Invoice status moves to Paid when the captured total covers the invoice balance.
  • Invoice status moves to Partially Paid when the captured total is less than the balance (for example, when a client pays a portion through Checkout and intends to settle the remainder another way).
  • The Client Portal and MSP-side invoice views both reflect the new status without any manual action from the billing team.

Record payments received outside Stripe

For payments that arrive by check, ACH, wire, or any other channel that does not flow through Stripe, billing admins record the payment manually so the invoice still closes out cleanly.

  1. Open the finalized invoice from the MSP billing area.
  2. Record the payment with:
    • Amount — how much was received.
    • Payment Date — the date funds were received.
    • Payment Method — for example check, ACH, wire, or cash.
  3. Save the payment.

AlgaPSA applies the payment to the invoice balance and updates the status to Paid or Partially Paid the same way it would for a Stripe-driven payment. This works on both EE and OSS tenants.

Operating checklist for billing admins

  • Confirm Stripe shows a green Connected banner and a green webhook status.
  • Decide on a payment link expiration that fits how quickly clients normally pay.
  • Turn on payment links in invoice emails if you want clients to pay straight from the email.
  • Turn on payment confirmations if your clients expect a receipt email after paying.
  • After any infrastructure change (URL change, key rotation, tenant migration), re-test the connection and use Retry Webhook Configuration if needed.
  • Watch for invoices stuck in finalized-but-unpaid status — these are good candidates for a Pay link reminder or a manual payment record.

Related topics