Who does what
You own the UX. OpenCard owns signing pages, identity verification, and data delivery.
Big picture
Phase 1 — Client setup
The client walks through your product: card program → products → invoice details → TPA signatories. You then create billing, TPA, organization, and webhook via the API (or receive the payload from the ocTPA plugin and POST it yourself). Complete when the TPA is signed (ideally activated), the organization exists withbilling_id + tpa_id, and the webhook is active.
→ Card issuer setup · TPA flow · Billing · Webhooks
Phase 2 — Cardholder setup
Add each employee as a card holder. Email path sends PDPC + eID; instant path matches onidentity_id with no user action.
Complete when you receive card_holder.identified — then expect transactions (including a retroactive batch).
→ Card holder onboarding · Model: Card holder
Phase 3 — Live
Card issuer pushes transaction states → OpenCard POSTs to your webhook → enrichment may follow (receipts, VAT, line items, environmental impact). → Transaction states · Events · ReceiptsOrdered checklist
Do this per client (after your account + OAuth client exist):Build it yourself vs embed plugin
The plugin mirrors Phase 1 in the UI. Organization + webhook and card holders stay in your integration.
Deep dives in this section
Models (what each entity is): Billing · Organization · TPA · Card holder

