> ## Documentation Index
> Fetch the complete documentation index at: https://docs.knotapi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Knot Zero

> Launch CardSwitcher from a link or QR code without integrating the Knot SDK.

## Overview

Knot Zero lets you bring users into the Knot CardSwitcher experience to discover & login to merchants and update their card with nothing more than a link, shared as a URL or a QR code. You don't need to integrate the Knot SDK into your mobile app. A user can open the link on their phone (iOS or Android) or computer from an email, text message, push notification, or physical mailer.

## Use cases

* **Card activation and issuance.** Print a QR code on the card carrier or mailer, or display it in-branch when a card is issued, so users can set the new card as their payment method right away.
* **Marketing campaigns.** Drop a link into email, SMS, or push campaigns to drive top-of-wallet engagement without a native integration.
* **Support and contact center.** Send a link to a user during a call or chat to help them update their card on file at merchants.
* **Two-step integration.** Launch CardSwitcher to your users before you commit engineering resources to a full SDK integration.

## How it works

<Steps>
  <Step title="Choose a card data method">
    Decide how Knot will get each user's card details. See [Choosing a card data method](#choosing-a-card-data-method).
  </Step>

  <Step title="Generate links">
    Upload a spreadsheet of users in the Knot Dashboard, or send each user's parameters to Knot's API, and Knot returns a link that's unique to each user. See [Generating links](#generating-links).
  </Step>

  <Step title="Share the link">
    Distribute the link through any channel (email, SMS, push, or mailer), as a URL or QR code.
  </Step>

  <Step title="Users open the link">
    Users click the link or scan the QR code and the Knot experience opens instantly on their device. No app download or login to your app is required.
  </Step>

  <Step title="Users are verified">
    Knot sends a one-time code (OTP) to the user's phone number and users must first verify the one-time code before proceeding into the Knot experience.
  </Step>

  <Step title="Users select a merchant and switch their card">
    Users select a merchant, login to the merchant, and their default card-on-file is updated automatically. Optionally, you can receive the same [webhook events](/card-switcher/webhook-events) as an SDK integration for analytics purposes.
  </Step>
</Steps>

## Choosing a card data method

Knot needs the user's card details to switch their card. Traditionally, you would send the card details to Knot's [Switch Card JWE](/api-reference/products/card-switcher/switch-card-jwe) or [Switch Card](/api-reference/products/card-switcher/switch-card) endpoints, requiring you to complete this backend integration step. With Knot Zero, you have a few additional options (below) to remove this integration effort.

<AccordionGroup>
  <Accordion title="Card details retrieved from your processor automatically">
    Knot retrieves the card details directly from your card processor through one of Knot's [processor integrations](/card-switcher/processor-digital-banking-integrations), using the `card_id` as reference. There may be lightweight, no-code setup steps with your processor to enable this method of retrieving card details, but you don't need a backend integration with Knot to send any card details.
  </Accordion>

  <Accordion title="You send card details (traditional method)">
    See [Sending Card Data](/card-switcher/sending-card-data) for details.
  </Accordion>

  <Accordion title="Users enter card details">
    With this option, users type their card details directly into a secure, PCI-compliant card form in the Knot experience. Card data never passes through Knot's or your system, and you don't need a backend integration with Knot to send any card details.
  </Accordion>
</AccordionGroup>

## Generating links

Knot stores each user's parameters and returns a short link with a unique token that references them. The parameters never appear in the link itself, and you don't need to build the link yourself. Generate links in one of two ways:

* **[Knot Dashboard](#generate-links-in-the-dashboard).** Upload a spreadsheet of up to 50,000 users, with no code.
* **[API](#generate-links-with-the-api).** Generate links from your backend, up to 10,000 users per request.

<Warning>
  Creating a link for a user and card revokes any link you created earlier for the same user and card. If you generate links for the same users again, send only the newest links.
</Warning>

### Generate links in the Dashboard

Upload a spreadsheet of users on the [Knot Zero page](https://dashboard.knotapi.com/knot-zero) in the Knot Dashboard and download the same file with a link added for each user. No code is required.

<Steps>
  <Step title="Upload your file">
    Upload a spreadsheet of up to 50,000 users with each user's ID, card ID, and phone number.
  </Step>

  <Step title="Match your columns">
    Confirm which columns hold the user ID, card ID, and phone number.
  </Step>

  <Step title="Generate links">
    Generate the links and download your file with a link added for each user.
  </Step>
</Steps>

### Generate links with the API

Call the API with your [API key](/api-reference/authentication). Use [Create Knot Zero Links (Batch)](/api-reference/products/card-switcher/create-knot-zero-links-batch) for up to 10,000 users per request, or [Create Knot Zero Link](/api-reference/products/card-switcher/create-knot-zero-link) for a single user, such as when a card is issued or during a support call. In a batch, a user that fails validation gets an error instead of a link without failing the rest of the request, and a user can appear once per card.

#### Parameters

All parameters are required for every link.

<table>
  <colgroup>
    <col width="162" />

    <col width="435" />
  </colgroup>

  <thead>
    <tr>
      <th>Parameter</th>
      <th>Description</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>`type`</td>
      <td>The product to associate the link with. Must be `card_switcher`.</td>
    </tr>

    <tr>
      <td>`phone_number`</td>
      <td>The user's phone number in E.164 format. Must be a valid US or Canadian phone number. Knot sends a one-time code to this number to verify the user before they enter the Knot experience.</td>
    </tr>

    <tr>
      <td>`external_user_id`</td>
      <td>Your unique identifier for the user, up to 256 characters. Knot uses it to identify the user and includes it in [webhook events](/card-switcher/webhook-events).</td>
    </tr>

    <tr>
      <td>`card_id`</td>
      <td>Your unique identifier for the user's card, up to 256 characters. Knot uses it to identify the card to switch, such as when retrieving card details from your processor.</td>
    </tr>
  </tbody>
</table>

#### Example

```json Request theme={"system"}
{
  "type": "card_switcher",
  "phone_number": "+12025550123",
  "external_user_id": "123abc",
  "card_id": "81n9al10a0ayn13"
}
```

```json Response theme={"system"}
{
  "link": "https://clip.knotapi.com/switch?token={TOKEN}",
  "token": "{TOKEN}"
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.