Workflow

From hub install to paid order.

The end-to-end path for WooCommerce and custom platforms — including what is authoritative for money state.

System shape

Storefront starts. Hub settles. Status returns.

Customers browse on your shop. Payment clears on the WordPress hub. Signed status is the source of truth for marking orders paid.

  • HMAC sync, connect, fee info, and create payment
  • PayPal Orders v2 + webhooks on the hub
  • Woo: HMAC status · Custom: signed webhook

Seats first

Credentials come from the hub — never invented offline.

Mint each store under FinPay → Stores. That claim uses a license seat and creates the HMAC pair your shop will sign with.

  • Active LicensePress license on the Payment Hub
  • Add store claims a seat and issues site credentials
  • Woo Test & Connect or custom health → connect

Sequence

Ten beats from license to retry

Follow this path once — then every store in the network reuses the same hub.

01

Activate license on the Payment Hub

Active LicensePress license is required before store seats can be minted.

02

Lock Payment role & configure PayPal

Sandbox or live Client ID, secret, merchant ID, and webhook ID. Start in sandbox.

03

Mint a store under FinPay → Stores → Add

Claims a license seat and creates HMAC credentials. Do not invent store IDs offline.

04

Connect the storefront

Woo: Store role + Test & Connect. Custom: signed health then connect with site_url and webhook_url.

05

Sync catalog (masked)

Push products with mask fields for PayPal. Prices stay real; unsynced lines can use placeholders.

06

Customer starts on the store

orders/create with session token, store order id, items, totals, return URLs, delivery mode.

07

Customer pays on the hub

Redirect opens checkout_url. Iframe embeds it — postMessage success is UI-only.

08

PayPal capture + hub order update

Hub captures via Orders v2. Bridged order is tagged to the originating store.

09

Status notify (source of truth)

Mark paid only after verified HMAC status (Woo) or signed webhook (custom).

10

Retries if notify fails

Immediate push first; background retries with backoff. Admins can retry from Order Sync.

Source of truth

Mark paid only after verified status.

Checkout UI and postMessage are hints. Woo listens for HMAC REST status; custom stores receive a signed webhook and must return 2xx.

  • Woo: FinPay Store role applies paid from hub notify
  • Custom: signed webhook to your webhook_url
  • Failed notify retries with backoff; admins can retry

Emails & ownership

Customer mail stays on the store.

Hub bridged orders avoid duplicate Woo customer emails. Decline messages can travel on the status payload.

  • Confirmation emails: store (after paid status/webhook)
  • Hub: attribution without customer-facing duplicates
  • Production: HTTPS and clocks within the replay window

Checklist

What you need live

Payment Hub

WordPress, WooCommerce, FinPay Payment role, PayPal, active license.

Woo store

FinPay Store role plus hub credentials and Test & Connect.

Custom store

Server-side secrets, HMAC, HTTPS webhook returning 2xx.

Connecting a custom stack?

Read the platforms guide or compare plans with the seats you need.