Payment Hub
WordPress, WooCommerce, FinPay Payment role, PayPal, active license.
Workflow
The end-to-end path for WooCommerce and custom platforms — including what is authoritative for money state.
System shape
Customers browse on your shop. Payment clears on the WordPress hub. Signed status is the source of truth for marking orders paid.
Seats first
Mint each store under FinPay → Stores. That claim uses a license seat and creates the HMAC pair your shop will sign with.
Sequence
Follow this path once — then every store in the network reuses the same hub.
Active LicensePress license is required before store seats can be minted.
Sandbox or live Client ID, secret, merchant ID, and webhook ID. Start in sandbox.
Claims a license seat and creates HMAC credentials. Do not invent store IDs offline.
Woo: Store role + Test & Connect. Custom: signed health then connect with site_url and webhook_url.
Push products with mask fields for PayPal. Prices stay real; unsynced lines can use placeholders.
orders/create with session token, store order id, items, totals, return URLs, delivery mode.
Redirect opens checkout_url. Iframe embeds it — postMessage success is UI-only.
Hub captures via Orders v2. Bridged order is tagged to the originating store.
Mark paid only after verified HMAC status (Woo) or signed webhook (custom).
Immediate push first; background retries with backoff. Admins can retry from Order Sync.
Source of truth
Checkout UI and postMessage are hints. Woo listens for HMAC REST status; custom stores receive a signed webhook and must return 2xx.
Emails & ownership
Hub bridged orders avoid duplicate Woo customer emails. Decline messages can travel on the status payload.
Checklist
WordPress, WooCommerce, FinPay Payment role, PayPal, active license.
FinPay Store role plus hub credentials and Test & Connect.
Server-side secrets, HMAC, HTTPS webhook returning 2xx.
Read the platforms guide or compare plans with the seats you need.