Skip to content

Payment Integrations

The portfolio's payment story is a unified payment-gateway service that fronts five processors. Every billing-enabled app installs all five SDKs even if only one is the default; per-tenant routing flips between them.

Portfolio default: the five gateways

Gateway App count Default for
Stripe ~25 apps Subscriptions, modern checkout flows
PayPal ~15 apps Consumer fallback
Braintree ~10 apps Enterprise / legacy merchants
Square ~10 apps In-person + online retail
Authorize.net ~10 apps Legacy enterprise

Apps that ship the full five-gateway set: Automotive-Repair-Diagnosis-AI, Boomer_AI, Ecom-Sales, FamilyChat, GoGreen-AI-Concierge, GoGreen-SmartForms, GoGreen-Workflow-Hub, GoGreenPaperlessInitiative, GoGreenSourcingAI, GogreenSellerAI, Maximus, MyPollingApp, NaggingWifeAI, OpenSentinel, PRT, Realestate-all-docker, Recruiting_AI, Sales_AI_App, Tutor_AI, Voting_NewAndImproved.


Stripe

What it is. Card processing + billing engine. Subscriptions, checkout sessions, customer portal, invoices, tax (Stripe Tax), payment links, Apple Pay / Google Pay through one SDK. Webhooks for every state change.

Why it's the default. Best DX, best docs, fastest integration. Recurring billing is solved out of the box.

SDK: stripe (Node) — used everywhere. stripe-php for Maximus / Voting / WP plugins.

Common patterns: - Checkout Sessions — for one-shot purchases. Stripe-hosted. - Subscriptions — Boomer_AI ("Plus / Family / Premium"), Tutor_AI, FamilyChat. Webhook (customer.subscription.updated) drives the local user-tier column. - Webhooks — every billing app verifies Stripe-Signature and runs the event through an idempotency check. - Stripe Connect — not used. No marketplace-style platform-payment flows in the portfolio.


PayPal

What it is. The original online wallet. Consumers without a card on file, international payments, recurring billing.

SDK: @paypal/checkout-server-sdk (Node, deprecated but still in use), paypalrestsdk (Python — Automotive uses this), srmklive/paypal (PHP — Voting uses this).

Used as primary in: apps where the customer base skews older or international. PayPal is the "secondary checkbox" in Stripe-first apps.

Tradeoffs. SDK quality lags Stripe. Webhooks less reliable historically. Buyer protection rules can claw back funds.


Braintree

What it is. PayPal-owned full-stack gateway. Cards + PayPal + Venmo + Apple/Google Pay through one tokenizer. Used by larger merchants for the unified vault.

SDK: braintree (Node and Python).

Used as primary in: Automotive-Repair-Diagnosis-AI flow uses Braintree as a peer of Stripe — some shops have a Braintree account already.


Square

What it is. Originally in-person card readers; now online + in-store unified. Strong at retail / restaurants / appointment-booking businesses.

SDK: squareup (Python — Automotive), square (Node).

Used as primary in: Salon-Digital-Assistant, MangyDogCoffee, SCO-Digital-Assistant — verticals with brick-and-mortar customers who already use Square POS.


Authorize.net

What it is. Visa-owned legacy gateway, very common with older B2B merchants and traditional retail. ARB for recurring billing.

SDK: httpx REST in Python (Automotive), authorizenet in Node.

Why it's still on the list. Customers who've used Auth.net for 15 years aren't switching. Tutor_AI and the larger e-commerce apps include it for that reason.


The unified payment-gateway service pattern

What it is. Each billing-enabled app exports a single PaymentGatewayService (varies in name) that hides the concrete gateway behind methods like:

service.createCheckout({ amount, currency, customer })
service.createSubscription({ planId, customer })
service.refund({ chargeId, amount })
service.handleWebhook(req)

The active gateway is chosen by per-tenant config — tenant A gets Stripe, tenant B gets Authorize.net, the calling code doesn't change.

Reference implementations to copy from: Recruiting_AI, GoGreen-Sourcing, Maximus, FamilyChat, Boomer_AI all expose this pattern. See per-app src/services/payment.service.ts (or .php).

Per Integrations_Audit.md: the unified service is documented as the standard across "all 5 payment gateways now fully implemented" — see the ### Payment Gateways table in that file for the per-app matrix.


Webhook conventions

Every gateway integration: 1. Exposes a /webhooks/{gateway} POST endpoint. 2. Verifies the gateway-specific signature header before parsing. 3. Persists the raw body + parsed event in an audit table for replay. 4. Routes the event to a typed handler (onSubscriptionUpdated, onChargeRefunded, …). 5. Idempotency-keys the handler by event.id so retries are safe.


Cryptocurrency / Web3 (separate)

The Web3 apps (akt-giving-garden, chat-governance-hub, tiny-governance-hub, my-onchainkit-app) accept on-chain payments via wallet-connect flows. See Integrations-Web3.md. They do not use the five fiat gateways.


Comparison alternatives (not used)

Gateway Notes
Adyen Enterprise-grade, multi-region. No portfolio app at that scale.
Klarna / Affirm BNPL. Not in any flow.
Mollie / Razorpay / Paystack Region-specific. No app targets those regions.
Lemon Squeezy / Paddle Merchant-of-Record (handles VAT/sales tax). Useful for SaaS — not used here, Stripe handles tax via Stripe Tax.
Crypto-fiat (Coinbase Commerce, BitPay) Not used. Web3 apps go on-chain directly.

Decision guide

Stripe is fine?                       Stripe.
Customer requires a different gateway?  Use the unified service to switch.
Need BNPL?                            Add Klarna/Affirm via Stripe (Stripe supports these).
Tenant on Square POS?                 Square (already fits their flow).
Pre-2020 enterprise customer?         Authorize.net.
On-chain payments?                    See Integrations-Web3.md.