Swipelux
Advanced

KYC Links

Creating a KYC Link

KYC Links let you outsource the entire identity-verification flow to Swipelux with one POST request and a hosted link.
Instead of collecting documents yourself and calling the /v1/customers API, you simply:

  1. Create a KYC Link.
  2. Send the returned URL to your customer (or embed it in an iframe).
  3. Poll the link or subscribe to webhooks to track its status.

Why use KYC Links?

  • Faster go-live — no UI/UX or document upload logic to build.
  • Always up-to-date compliance workflow powered by our partners.
  • Works for both individuals and businesses in 200+ jurisdictions.

Make the API request

curl https://wallet.swipelux.com/v1/kyc-links \
  --request POST \
  --header 'Content-Type: application/json' \
  --header 'X-API-Key: YOUR_SECRET_API_KEY' \
  --header 'Idempotency-Key: <uuid>' \
  --data '{
    "fullName": "John Doe",          
    "email": "john.doe@example.com",
    "type": "individual",            
    "redirectUri": "https://yourapp.com/kyc-complete"
  }'

Body parameters

FieldTypeRequiredNotes
fullNamestringFull name (individual) or legal entity name.
emailstringMust be unique per KYC Link.
typestring"individual" or "business".
redirectUristringCustomer is redirected here after finishing KYC.

Response

{
  "id": "kyc_ln_3dX5MttD5nAUAbud1B",
  "email": "john.doe@example.com",
  "type": "individual",
  "kycLink": "https://verify.swipelux.com/link/3dX5MttD5nAUAbud1B",
  "tosLink": "https://docs.swipelux.com/legal/tos",
  "kycStatus": "not_started",
  "tosStatus": "pending",
  "createdAt": "2025-07-21T11:24:18.712Z"
}
FieldDescription
kycLinkHosted verification flow. Send or embed this URL.
tosLinkSwipelux Terms of Service — must be accepted by the customer.
kycStatusCurrent KYC workflow state (see Status transitions).
tosStatusWhether the customer has accepted the Terms of Service.

Check the status

curl https://wallet.swipelux.com/v1/kyc-links/kyc_ln_3dX5MttD5nAUAbud1B \
  --request GET \
  --header 'X-API-Key: YOUR_SECRET_API_KEY'

Successful response returns the same object as above, plus:

{
  ...
  "customerId": "cus_cK69MttD5nAUAbud1B"
}

Status transitions

not_started → incomplete → approved
                ↘ under_review ↘
                           rejected
  • not_started – Link created, customer has not opened it yet.
  • incomplete – Customer entered the flow but has not finished all steps.
  • under_review – Waiting for manual compliance review.
  • approved – Customer and (for businesses) UBOs verified.
  • rejected – Verification failed. See rejectionReasons field (future release).

Embedding in an iframe (optional)

<iframe
  src="https://verify.swipelux.com/widget?id=3dX5MttD5nAUAbud1B&iframe-origin=${encodeURIComponent(window.location.origin)}"
  allow="camera; microphone;"
  sandbox="allow-scripts allow-forms allow-popups allow-same-origin"
  style="border:0;width:100%;height:600px">
</iframe>
  1. Append iframe-origin with window.location.origin (encoded).
  2. Replace /link/ with /widget/ to load the iframe-friendly variant.

Webhooks

Subscribe to the kyc_link.updated webhook to receive real-time status changes.
See the Webhook API for payload details.


Next steps

On this page