Skip to main content
This is the end-to-end path for connecting one of your clients to OpenCard. Everything you need lives in the Application API — no embed plugin required. The guides below this page go deeper on TPA signing, eID, and card holders.

Who does what

You own the UX. OpenCard owns signing pages, identity verification, and data delivery.

Big picture


Phase 1 — Client setup

This is what the client walks through in your product (same order as the optional ocTPA plugin). You collect choices in the UI, then create the OpenCard resources.

1. Choose card program

Show only issuers already enabled on your account. The client picks one → you store card_issuer_id for the TPA. Enabling new issuers on the account is one-time platform setup — not part of this per-client wizard. → Quickstart

2. Choose products

What OpenCard should deliver for this client. Stored as flags on the billing profile when you create it:
FieldMeaningTypical UX
product_transactionReal-time transaction states to your webhooksUsually always on
product_digital_receiptDigital receipts from the merchant networkOptional toggle
product_aland_indexEnvironmental impact estimatesOptional toggle
Transactions are the core product. Receipts and environmental impact are enriched add-ons — same split the plugin uses (“Transaction information” vs “Enriched information”). Billing · Receipts · Environmental impact

3. Invoice details (for your OpenCard bill)

Collect how you (the EMS) want this client represented on the invoice OpenCard sends you:
  • Invoice email (email_invoice)
  • Your reference (your_reference_invoice)
  • Legal name / org number / address (often from public records)
Organizations that share the same billing profile appear as one line on that invoice — not as separate invoices per organization. This is not the bank’s card invoice to the client. Billing

4. Create the TPA (company authorisation)

A TPA (Transaction Processing Authorisation) is the legal agreement that this company allows card transaction data from the chosen card program to flow through OpenCard to your EMS. Look up who is allowed to sign:
Use signature_combinations when present so the client picks a valid signing group. Collect name + email for each person who will sign (or allow manual entry when the registry has no combinations). You create the TPA and signatories in the next step. Full walkthrough → TPA flow · eID signing

5. Configure the client

When the client confirms steps 1–4, create the OpenCard resources (same payload shape the ocTPA plugin returns in onDataSend):
OpenCard emails each TPA signatory. They sign with national eID. You wait for status — do not build your own signing UI. Organization body — link the TPA and billing you created. reference_id is your internal client ID (returned on every webhook):
Complete the webhook challenge handshake so active=true and events can be delivered. Billing · Organization · Webhook setup · TPA flow Client setup is complete when the TPA is signed (ideally activated), the organization exists with billing_id + tpa_id, and the webhook is active.

Phase 2 — Cardholder setup

Goal: each person whose card spend you want is identified in OpenCard.
OpenCard handles PDPC email + eID. You handle status in your UI (card_holder.identified, card_holder.signed.pdpc). Card holder onboarding · Model: Card holder · eID signing Cardholder is onboarded when you receive card_holder.identified — then expect transactions (including a retroactive batch).

Phase 3 — Live

Once card holders are identified and the TPA is activated:
  1. Card issuer pushes transaction states to OpenCard
  2. OpenCard POSTs to your organization webhook (card.transaction.*)
  3. Enrichment may follow: receipt.fetched, true VAT, line items, environmental impact
Transaction states · Events · Receipts

Ordered checklist

Do this per client (after your account + OAuth client exist):

Build it yourself vs embed plugin

The plugin mirrors steps 1–4 in the UI and gives you billing / TPA / signatory data in onDataSend. Step 5 (organization + webhook) and card holders stay in your integration.

Deep dives in this section

Models (what each entity is): Billing · Organization · TPA · Card holder