Skip to main content
Before you can issue a card, every applicant must pass two checks. Seismic orchestrates both — you never integrate with the card program or identity vendors directly.
status: APPROVED alone is not enough to issue cards. You must also wait for issuerKycReady: true. Card issuance returns ISSUER_KYC_INCOMPLETE otherwise.

What gets shared?

You never upload passports, selfies, or PDFs to Seismic. Identity providers support a share token — a short-lived credential that lets the card program pull an already-verified profile. Seismic accepts that token and forwards it upstream. Raw documents stay inside the identity provider.

Get your integration settings

cURL
Sumsub webhooks (target): register Sumsub against the Core API URL from sumsubWebhookUrl (POST /v1/webhooks/sumsub). Set SUMSUB_WEBHOOK_MODE=seismic and PUBLIC_API_URL on the API host. After the hosted widget completes, call POST /v1/applicants/{id}/submit to sync tenant status and trigger issuer handoff (webhooks may also update status). Use GET …/kyc-status to poll issuer progress. Legacy seismic mode (/webhooks/sumsub on seismic-cards) is migration-only — see Webhooks.

Option A — Seismic-hosted verification

Best when you don’t run your own Sumsub (or similar) account. Seismic hosts the widget and handles issuer handoff automatically.
1

Create an applicant

cURL
2

Start a verification session

cURL
Response includes accessToken — pass it to the hosted WebSDK in your frontend. externalUserId is the Seismic applicant id.
3

User completes the widget

When verification succeeds in the widget, call POST /v1/applicants/{id}/submit to sync tenant status and trigger issuer handoff. With SUMSUB_WEBHOOK_MODE=seismic, Sumsub also posts to POST /v1/webhooks/sumsub on Core API — still call submit so issuer handoff is not delayed if the webhook is slow.
4

Confirm issuer readiness

cURL
Wait until issuerKycReady is true, then create a cardholder and issue a card.
You can also call POST /v1/applicants/{id}/submit after the widget completes to poll tenant status and trigger issuer handoff in one step.

Option B — Bring your own identity provider (BYOK)

Best for regulated companies that already run their own Sumsub (or compatible) environment. You never use Seismic’s hosted widget.
1

Create an applicant in Seismic

Save the returned id — you will use it as externalUserId in your identity provider.
2

Verify the user in your provider

Run your existing KYC flow. Set externalUserId to the Seismic applicant id so records stay linked.
3

Generate a share token

Call your provider’s share-token API with:
  • Applicant id — from your provider
  • RecipientshareRecipientId from GET /v1/kyc/config (Seismic’s id, not the card issuer)
Example (Sumsub):
Seismic imports the shared verification and forwards it to the card program internally. The token expires quickly (typically ~10 minutes). Generate it immediately before calling Seismic.
4

Submit the token to Seismic

cURL
5

Poll until ready

cURL
Issue cards only when issuerKycReady is true.
BYOK tenants do not need Seismic-hosted verification credentials. They only need a Seismic API key and the shareRecipientId from /v1/kyc/config.

Applicant response fields

Every applicant includes white-labeled issuer fields:

Endpoints summary


Troubleshooting

See Error codes for the full list of error.code values.

Next steps

Applicants

Applicant lifecycle and statuses

Cards

Issue cards after issuer KYC is ready

Quickstart

End-to-end sandbox walkthrough

API Reference

Try endpoints in the playground