FinanceModule sits between commerce and the books: wallets hold internal balances, payouts move money out to real accounts, and the payment controller is a gateway-agnostic front end for charging cards.
Wallets
/finance/walletsJWT/finance/walletsJWT/finance/wallets/get-or-createJWT/finance/wallets/owner/lookupJWT/finance/wallets/transactions/lookupJWTget-or-create is the idempotent path — call it rather than checking existence first.
Movements
/finance/wallets/:walletId/creditJWT/finance/wallets/:walletId/debitJWT/finance/wallets/:walletId/holdJWT/finance/wallets/:walletId/release/:holdIndexJWTHolds reserve funds without moving them — an escrow between order and fulfillment. Note that a hold is released by index, not by an id, so releasing depends on the hold's position in the wallet's array.
/finance/wallets/:walletId/freezeJWT/finance/wallets/:walletId/unfreezeJWTDatatypes: wallet, wallet_transaction.
Payouts
/finance/wallets/:walletId/request-payoutJWT/finance/payoutsJWT/finance/payouts/:payoutIdJWT/finance/payouts/number/lookupJWT/finance/wallets/:walletId/payout-summaryJWTLifecycle — each POST /finance/payouts/:payoutId/<action>:
| Action | Meaning |
|---|---|
approve | Cleared for processing |
process | Submitted to the payment rail |
complete | Funds confirmed delivered |
fail | Rejected or returned |
cancel | Withdrawn before processing |
process and complete are separate because ACH settlement is not immediate. Marking complete on submission would report money as delivered that can still be returned.
/finance/batch/payoutsJWT/finance/wallets/:walletId/payout-settingsJWT/finance/stats/walletsJWT/finance/stats/payoutsJWTDatatype: payout.
Payments
A uniform surface over whichever gateway is configured.
/finance/payments/chargeJWT/finance/payments/authorizeJWT/finance/payments/captureJWT/finance/payments/voidJWT/finance/payments/refundJWT/finance/payments/cancelJWT/finance/payments/verifyJWT/finance/payments/retryJWT/finance/payments/mark-paidJWT/finance/payments/resend-receiptJWTcharge is authorize-and-capture in one step; authorize then capture splits it — the right shape when you charge on shipment rather than on order. void cancels an authorization that was never captured; refund reverses a capture.
/finance/payments/actionJWT/finance/payments/gateway-urlJWT/finance/payments/gateway-transactionsJWTaction is the generic dispatcher; gateway-transactions reads from the provider rather than local records, which is how you reconcile a discrepancy.
Customer-facing
Under /client/finance/*, scoped to the signed-in customer — the surface a marketplace seller or affiliate uses.
/client/finance/walletJWT/client/finance/payoutsJWT/client/finance/payouts/:payoutIdJWT/client/finance/payouts/requestJWT/client/finance/payout-settingsJWTPayout methods:
/client/finance/payout-methodsJWT/client/finance/payout-methodsJWT/client/finance/payout-methods/:methodIdJWT/client/finance/payout-methods/:methodIdJWT/client/finance/payout-methods/:methodId/defaultJWTRelated
- Storefront payments — Stripe and PayPal at checkout
- Banking — read-only bank linking and reconciliation (AppEngine does not send transfers)
- Books — where these movements post to the ledger