Which payment rails are supported?
Cards (Stripe): Payment Intents, hosted Checkout.
Bank / Open Banking: SEPA/FPS via payment link + webhook settlement.
Crypto: Wallet‑based USDC/ETH, on‑chain escrow.
All rails normalize to the same order/payment model with webhook‑confirmed settlement.
How do refunds work?
Initiate in the provider dashboard (e.g., Stripe).
Provider sends a webhook (e.g.,
charge.refunded
).TradeOS marks the payment as refunded and updates order status.
Partial refunds are supported; invoices and summaries reflect the refunded amount.
Can I save a card on file?
Yes (Stripe). Use Payment Methods / Setup Intents.
Guidance
Ensure you have customer consent.
Comply with PCI and regional regulations (SCA).
Do you support recurring payments?
Yes. Use recurring invoices or Stripe Subscriptions.
For retainers, set monthly invoices with automatic collection.
Webhooks reconcile each period’s payment into the matching order or ledger entry.
How does escrow protect me?
Funds are locked until milestones are approved.
Buyers gain delivery assurance.
Sellers gain payout assurance upon acceptance.
Disputes decide releases/refunds when there’s disagreement.
Can admins force escrow release?
Yes, as part of dispute resolution. Admins can order refund_full, refund_partial, or release_to_seller with justification. All actions are logged and affect reputation.
Can I price in fiat but pay in crypto?
Yes. Quote in USD/EUR, settle in USDC/ETH. The conversion timing (quote vs. settlement) is defined by your org policy.
How do I reconcile payments across providers?
Store a reference (e.g., Stripe PI ID / bank reference / tx hash).
Use webhooks to mark final status.
Export payments ledger for accounting; include currency, amount, fees, and references.
How do I test card flows safely?
Use Stripe test keys and test cards.
stripe listen --forward-to localhost:3000/api/webhooks/stripe
Confirm webhooks are received; verify order status moves to DepositPaid
.
Do you handle SCA/3DS?
Yes (Stripe). Payment Intents/Checkout handle 3DS automatically. Your UI should display the challenge flow when required.