Architecture
Orgo doesn’t process card data directly — that’s Stripe’s job. Orgo orchestrates the flow:Card payment — Stripe checkout
Step 1 — Generate a checkout URL
For a membership product the member is buying:EventAttend response when the event has paid tickets — see Create and sell event tickets.
Response includes a checkoutUrl:
checkoutUrl. Stripe handles the card collection.
Step 2 — Stripe completes the charge
On Stripe’s side, the charge succeeds (or fails). Stripe POSTs to Orgo’s webhook at/api/v1/stripe-webhook. This is invisible to your integration — Orgo handles it.
Internally, Orgo creates a ProductPayment record with status: SUCCESS (or FAILED).
Step 3 — React via webhook
Subscribe toproduct_payment.updated:
Refunding a paid charge
When a member requests a refund (cancelled event, mistaken purchase, dispute settlement), call the refund endpoint:amount in cents. Omit for a full refund.
reason is passed through to Stripe — common values: duplicate, fraudulent, requested_by_customer. Used for Stripe’s dispute analytics.
The refund returns immediately with the updated ProductPayment showing status: REFUNDED. Stripe processes the actual transfer over the following 5-10 business days.
For partial refunds, call repeatedly until cumulative amount equals the original charge.
Refunds are not reversible. Once issued, the funds are returned to the cardholder. To re-charge, the cardholder must complete a new checkout.
Bank transfer with invoice
For members who pay by bank transfer (corporate memberships, multi-thousand-dollar annual fees, regions where cards are uncommon), the flow is:Step 1 — Issue an invoice
billingEmail. The member transfers funds to the account printed on the invoice.
Step 2 — Mark as paid
When you see the transfer hit the bank, mark the invoice:status: SUCCESS and method: BANK_TRANSFER. Your webhook receiver sees the same product_payment.updated event it sees for card payments.
Cancellation, void, refund
Resending the invoice email
Reporting and reconciliation
All payments in a date range
hydra:totalItems gives you the count, the array gives you the data. Paginate as usual.
Sum of successful payments
There’s no aggregation endpoint — fetch the page and sum locally. For monthly reporting, this is fine. For dashboards refreshing every minute, cache the result.Stuck-pending invoices
Common gotchas
The checkout URL returns Stripe's 'no account configured' error
The checkout URL returns Stripe's 'no account configured' error
Stripe is connected at the local-center level (preferred) or the tenant level. The product’s
unit determines which Stripe account is used. If the unit doesn’t have Stripe connected, checkout creation fails. Check Settings → Local Centers → [Center] → Payments.My ProductPayment shows SUCCESS but I never saw the webhook
My ProductPayment shows SUCCESS but I never saw the webhook
Two causes: (1) the subscription wasn’t
active at the time of the event — check the subscription state; (2) the receiver returned non-2xx 3 times in a row, so delivery is in the failed log. Hit GET /api/v1/webhook_subscriptions/{id}/delivery_logs and replay.Refund returned 200 but the cardholder hasn't received the money
Refund returned 200 but the cardholder hasn't received the money
Stripe processes refunds asynchronously — typically 5-10 business days for cards, longer for some debit cards and most international cards. Check the refund status in Stripe’s dashboard for the authoritative answer.
Bank transfer invoice has the wrong VAT — can I edit it after issuing?
Bank transfer invoice has the wrong VAT — can I edit it after issuing?
No. Invoices are immutable once issued (legal requirement). Void the existing invoice and issue a corrected one. The void preserves the audit trail; the new invoice carries a new number.
Can I charge a saved card without redirecting to Stripe?
Can I charge a saved card without redirecting to Stripe?
Not via this endpoint. Orgo’s payment surface routes everything through Stripe’s hosted checkout. For card-on-file MOTO/subscription charges, use the SubscriptionProfile resource — Stripe handles the recurring billing.
What to do next
- Handle webhooks — react to payment events
- Create and sell event tickets — payment in the ticketing context
- Sync your CRM with Orgo — push payment events into your accounting system

