Skip to main content
This is the full path: register → TPA signed → org live → cardholder consented → webhook firing. Grab coffee. ☕ Let’s go.

Step 0: Register (sandbox)

👉 sandbox-api.opencard.io/register You get an Account + admin user. Verify email. Log in. Your accountId is in the dashboard URL or API responses.

Step 1: Create an account_client

Save the access_token. All subsequent calls:
Scopes are space-separated. Request only what you need. Full list in Authentication. Always send Accept: application/json so error responses stay JSON (not an HTML login page).

Step 2: Enable a card issuer


Step 3: Lookup company (optional but smart)

Before creating a TPA, check the public registry for signing combinations:
Response includes signature_combinations — who can legally sign for this company. You’ll add those people as TPA signatories next.

Step 4: Create TPA

TPA = Transaction Processing Authorization. Legal permission for transaction data to flow.
What happens server-side:
  1. Looks up company in the public registry (sandbox returns test data)
  2. Overrides name with registry name when found
  3. Creates the TPA record
  4. Snapshots legal text from the latest tpa template in the requested language
Org number formats: Response → save tpaId.

Step 5: Add signatories → email goes out 📧

Each signatory = someone authorized to sign for the company.
What happens:
  1. Server generates a 40-char token for this signatory
  2. Email is queued immediately with subject: Authorise TPA for Acme AB
  3. Email contains signing link:
  1. Signatory clicks link → sees TPA legal text → signs with eID
Repeat for each required signatory (check signature_combinations from step 3).
Signatories can only be updated/deleted while signed=false. Once signed, they’re locked.
Full signing details → TPA Flow and eID Signing.

Step 6: Wait for TPA to be signed ✍️

When all signatories have signed, OpenCard verifies signing rights and marks the TPA as signed. Then:
  • Signed PDF generated and stored
  • tpa.signed webhook fires (if subscribed)
  • TPA status → pending-activation (waiting for TPA to be confirmed)
  • Each signatory gets email with signed PDF attached

Step 7: Create organization

reference_id = your internal client ID. It comes back in every webhook. Save organizationId.

Step 8: Configure webhook 🔔

Challenge happens immediately. OpenCard sends:
Your endpoint must respond with header:
Until challenge passes, active=false and no events are delivered. Full webhook setup → Webhook Setup

Step 9: Create card holders 👤

Two paths — pick one. Full guide → Card Holder Onboarding.

Path A: Email + eID (new employee)

John gets email → signs PDPC with eID → card_holder.identified → transactions flow.

Path B: identity_id (instant — person already in OpenCard)

card_holder.identified fires instantly + retroactive transaction webhooks replay. No waiting for user action. ⚡

Step 10: Receive your first transaction 🎉

Once the issuer delivers transaction states and the cardholder has signed PDPC:
You did it. From zero to live transaction data.

What’s next?