Card Onboarding (KYC)

Before a user can hold a card they must complete onboarding: identity verification (KYC), underwriting, and agreement acceptance. Qwik orchestrates this with the card provider and hands you a hosted embed URL to render in a WebView.

i
Flow: POST /partner/cards/onboarding → open onboardingEmbedUrl in a WebView → user completes KYC/offer/agreement → POST /partner/cards/onboarding/:id/complete. Use GET /partner/cards/onboarding/latest to resume an in-progress session.

POST/partner/cards/onboarding

🔑 Org key + secret👤 User session
FieldTypeRequiredNotes
first_name, last_namestring
emailstringValid email.
phone_numberstring
country_codestringe.g. US.
date_of_birthstringYYYY-MM-DD.
address_line1string
address_line2stringOmit or "" if none.
address_city, address_state, address_zipstring
ssnstringNormalized server-side.
200 · Response
{
  "message": "Complete onboarding in the embedded flow to get your card.",
  "onboardingEmbedUrl": "https://component-embedded-sandbox.upwardli.com/...",
  "accessToken": "...",
  "expiresIn": 3600,
  "onboardingId": "uuid",
  "consumerId": "...",
  "status": "in_progress",
  "consumerKycStatus": "pending"
}

GET/partner/cards/onboarding/latest

🔑 Org key + secret👤 User session

Returns the user's most recent onboarding session, enriched with step-progress flags. If none exists, the response is the following with HTTP 200 (note: data is omitted entirely when null):

200 · Response (none found)
{
  "success": false,
  "error": { "message": "No onboarding found for this user" }
}

POST/partner/cards/onboarding/:onboardingId/complete

🔑 Org key + secret👤 User session

Finalizes onboarding after the embedded flow succeeds. Path: onboardingId — from the start response.

FieldTypeRequiredNotes
result"pass" | "fail"Outcome of the embedded KYC/underwriting flow.
datastring or objectResult payload from the embed (objects are JSON-stringified server-side).
agreement_acceptedbooleanMust reflect the user's acceptance.
inquiry_idstringDefaults to the server-configured value if omitted.
product_idstringDefaults to the server-configured value if omitted.
product_configurationobject | null
!
If neither inquiry_id/product_id is supplied and the server has no configured defaults, you get 400 Missing inquiry_id or product_id. Your Qwik client team sets these defaults per environment.

Response (200): the completion result (consumer + card details). 404 if the onboarding isn't found or doesn't belong to the user.