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

# Processor Credentials

> Required credentials and options for each payment gateway

# Processor Credentials

Each processor type requires different credentials in the `options` object when calling `tagada.processors.create()`. This page documents the exact fields for every supported gateway.

***

## Supported Gateways

<CardGroup cols={3}>
  <Card title="Stripe" icon={<img src="/assets/images/processors/stripe.svg" width="24" />} href="#stripe">Cards, wallets, APMs</Card>
  <Card title="NMI" icon={<img src="/assets/images/processors/nmi.png" width="24" />} href="#nmi">Direct gateway</Card>
  <Card title="Checkout.com" icon={<img src="/assets/images/processors/checkout.svg" width="24" />} href="#checkoutcom">Global payments</Card>
  <Card title="Airwallex" icon={<img src="/assets/images/processors/airwallex.svg" width="24" />} href="#airwallex">Multi-currency</Card>
  <Card title="Mastercard" icon={<img src="/assets/images/processors/mastercard.svg" width="24" />} href="#mastercard-gateway">Enterprise gateway</Card>
  <Card title="Authorize.Net" href="#authorizenet">US gateway</Card>
  <Card title="Finix" icon={<img src="/assets/images/processors/finix.jpg" width="24" />} href="#finix">Platform payments</Card>
  <Card title="N-Genius" icon={<img src="/assets/images/processors/ngenius.png" width="24" />} href="#network-ngenius">Middle East</Card>
  <Card title="CCAvenue" icon={<img src="/assets/images/processors/ccavenue.png" width="24" />} href="#ccavenue">India gateway</Card>
  <Card title="Ovri" icon={<img src="/assets/images/processors/ovri.png" width="24" />} href="#ovri">EU gateway</Card>
  <Card title="KessPay" icon={<img src="/assets/images/processors/kesspay.png" width="24" />} href="#kesspay">Alt. gateway</Card>
  <Card title="Trust Flow" icon={<img src="/assets/images/processors/trustflow.png" width="24" />} href="#trust-flow">Alt. gateway</Card>
  <Card title="ConvesioPay" icon={<img src="/assets/images/processors/convesio.svg" width="24" />} href="#convesiopay">WordPress payments</Card>
  <Card title="Tap" href="#tap">MENA payments</Card>
  <Card title="TagadaPay" icon={<img src="/assets/images/processors/tagadapay.png" width="24" />} href="#tagadapay">Managed payments</Card>
  <Card title="Sandbox" icon={<img src="/assets/images/processors/sandbox.svg" width="24" />} href="#sandbox">Testing</Card>
</CardGroup>

***

## Common Structure

All processors share the same creation format — only the `options` differ:

```ts theme={null}
const { processor } = await tagada.processors.create({
  processor: {
    name: 'My Gateway',
    type: 'stripe',           // ← processor type
    enabled: true,
    supportedCurrencies: ['USD', 'EUR'],
    baseCurrency: 'USD',
    options: { /* credentials — see below */ },
  },
});
```

***

## <img src="https://mintcdn.com/tagadapay/Qw6kVeL1g4c_2DvI/assets/images/processors/sandbox.svg?fit=max&auto=format&n=Qw6kVeL1g4c_2DvI&q=85&s=76f4c561354a792ca05ac729b00275ff" alt="Sandbox" width="28" style={{display: "inline", verticalAlign: "middle", marginRight: "8px"}} data-path="assets/images/processors/sandbox.svg" />Sandbox

**Type**: `sandbox` | **Use for**: Testing and development

No real credentials required — the sandbox processor simulates a payment gateway.

```ts theme={null}
options: {
  testMode: true,
}
```

| Field                | Type    | Required | Description                               |
| -------------------- | ------- | -------- | ----------------------------------------- |
| `testMode`           | boolean | No       | Always treated as test mode               |
| `forceDecline`       | boolean | No       | Force all payments to decline             |
| `targetApprovalRate` | number  | No       | Simulate a specific approval rate (0–100) |
| `simulatedDelay`     | number  | No       | Add artificial latency in milliseconds    |

<Tip>See the [Sandbox Testing Guide](/developer-tools/node-sdk/sandbox-testing) for a full walkthrough.</Tip>

***

## <img src="https://mintcdn.com/tagadapay/Qw6kVeL1g4c_2DvI/assets/images/processors/stripe.svg?fit=max&auto=format&n=Qw6kVeL1g4c_2DvI&q=85&s=ad2d1fbfbbb9b461dce3fe17a132be2a" alt="Stripe" width="28" style={{display: "inline", verticalAlign: "middle", marginRight: "8px"}} data-path="assets/images/processors/stripe.svg" />Stripe

**Type**: `stripe` | **Where to find credentials**: [Stripe Dashboard → Developers → API Keys](https://dashboard.stripe.com/apikeys)

```ts theme={null}
options: {
  secretKey: 'sk_live_...',
  publicKey: 'pk_live_...',
  webhookSecret: 'whsec_...',
}
```

| Field              | Type    | Required    | Description                                                                 |
| ------------------ | ------- | ----------- | --------------------------------------------------------------------------- |
| `secretKey`        | string  | **Yes**     | Stripe secret key (`sk_live_...` or `sk_test_...`)                          |
| `publicKey`        | string  | Recommended | Stripe publishable key (`pk_live_...`)                                      |
| `webhookSecret`    | string  | Recommended | Webhook signing secret (`whsec_...`)                                        |
| `testMode`         | boolean | No          | Use Stripe test mode                                                        |
| `sendReceiptEmail` | boolean | No          | Let Stripe send payment receipt emails                                      |
| `descriptor`       | object  | No          | Statement descriptor override (see [Descriptor Fields](#descriptor-fields)) |
| `radar`            | object  | No          | Enable Stripe Radar: `{ enabled: true, publishableKey: 'pk_...' }`          |
| `apmSettings`      | object  | No          | Alternative payment methods (Apple Pay, Google Pay, etc.)                   |

<Info>
  **Stripe Connect**: If you're connecting via OAuth instead of API keys, Stripe provides an `accountId` (e.g. `acct_...`). In this case you don't need `secretKey` — TagadaPay handles the authentication. This is typically done through the TagadaPay dashboard, not the API.
</Info>

***

## <img src="https://mintcdn.com/tagadapay/Qw6kVeL1g4c_2DvI/assets/images/processors/nmi.png?fit=max&auto=format&n=Qw6kVeL1g4c_2DvI&q=85&s=2b09cce47a2c522fa1f1cb3722c0bf1c" alt="NMI" width="28" style={{display: "inline", verticalAlign: "middle", marginRight: "8px"}} data-path="assets/images/processors/nmi.png" />NMI

**Type**: `nmi` | **Where to find credentials**: NMI Merchant Portal → Settings → Security Keys

```ts theme={null}
options: {
  apiKey: 'your-nmi-security-key',
}
```

| Field                   | Type    | Required | Description                             |
| ----------------------- | ------- | -------- | --------------------------------------- |
| `apiKey`                | string  | **Yes**  | NMI Security Key                        |
| `username`              | string  | No       | NMI username (for certain integrations) |
| `password`              | string  | No       | NMI password                            |
| `testMode`              | boolean | No       | Use NMI test mode                       |
| `merchantName`          | string  | No       | Merchant name for 3DS                   |
| `merchantUrl`           | string  | No       | Merchant URL for 3DS                    |
| `merchantCountryCode`   | string  | No       | ISO country code for 3DS                |
| `enable3DS`             | boolean | No       | Enable 3D Secure authentication         |
| `useProcessorToken`     | boolean | No       | Use NMI's tokenization                  |
| `descriptor`            | object  | No       | Statement descriptor override           |
| `acquirerBinVisa`       | string  | No       | Acquirer BIN for Visa 3DS               |
| `acquirerBinMastercard` | string  | No       | Acquirer BIN for Mastercard 3DS         |
| `acquirerBinAmex`       | string  | No       | Acquirer BIN for Amex 3DS               |
| `acquirerBinDiscover`   | string  | No       | Acquirer BIN for Discover 3DS           |
| `acquirerBinJcb`        | string  | No       | Acquirer BIN for JCB 3DS                |
| `acquirerBinDinersClub` | string  | No       | Acquirer BIN for Diners Club 3DS        |
| `acquirerBinCB`         | string  | No       | Acquirer BIN for Carte Bancaire 3DS     |
| `amexRequestorType`     | string  | No       | Amex 3DS requestor type                 |
| `cbSiretNumber`         | string  | No       | SIRET number for Carte Bancaire         |
| `discoverClientId`      | string  | No       | Discover 3DS client ID                  |

***

## <img src="https://mintcdn.com/tagadapay/Qw6kVeL1g4c_2DvI/assets/images/processors/checkout.svg?fit=max&auto=format&n=Qw6kVeL1g4c_2DvI&q=85&s=169c48f1b3bf3b6c150bf94cf265aaf9" alt="Checkout.com" width="28" style={{display: "inline", verticalAlign: "middle", marginRight: "8px"}} data-path="assets/images/processors/checkout.svg" />Checkout.com

**Type**: `checkout` | **Where to find credentials**: [Checkout.com Dashboard → Developers → Keys](https://dashboard.checkout.com)

Supports two authentication modes:

<Tabs>
  <Tab title="Secret Key (recommended)">
    ```ts theme={null}
    options: {
      apiKey: 'sk_...',
    }
    ```

    | Field       | Type    | Required | Description             |
    | ----------- | ------- | -------- | ----------------------- |
    | `apiKey`    | string  | **Yes**  | Checkout.com secret key |
    | `sandboxed` | boolean | No       | Use sandbox environment |
  </Tab>

  <Tab title="OAuth">
    ```ts theme={null}
    options: {
      clientId: 'ck_...',
      clientSecret: 'sk_...',
    }
    ```

    | Field          | Type    | Required | Description             |
    | -------------- | ------- | -------- | ----------------------- |
    | `clientId`     | string  | **Yes**  | OAuth client ID         |
    | `clientSecret` | string  | **Yes**  | OAuth client secret     |
    | `sandboxed`    | boolean | No       | Use sandbox environment |
  </Tab>
</Tabs>

***

## <img src="https://mintcdn.com/tagadapay/Qw6kVeL1g4c_2DvI/assets/images/processors/airwallex.svg?fit=max&auto=format&n=Qw6kVeL1g4c_2DvI&q=85&s=25f56d8ac6c0d739eceac7acddceb625" alt="Airwallex" width="28" style={{display: "inline", verticalAlign: "middle", marginRight: "8px"}} data-path="assets/images/processors/airwallex.svg" />Airwallex

**Type**: `airwallex` | **Where to find credentials**: [Airwallex Dashboard → Developer → API Keys](https://www.airwallex.com)

```ts theme={null}
options: {
  clientId: 'your-client-id',
  clientApiKey: 'your-api-key',
  webhookSecret: 'your-webhook-secret',
}
```

| Field           | Type    | Required | Description                                 |
| --------------- | ------- | -------- | ------------------------------------------- |
| `clientId`      | string  | **Yes**  | Airwallex client ID                         |
| `clientApiKey`  | string  | **Yes**  | Airwallex API key                           |
| `webhookSecret` | string  | **Yes**  | Webhook signing secret                      |
| `testMode`      | boolean | No       | Use Airwallex demo environment              |
| `descriptor`    | object  | No       | Statement descriptor override               |
| `apmSettings`   | object  | No       | APM config (Klarna, Afterpay, PayPal, etc.) |

***

## <img src="https://mintcdn.com/tagadapay/Qw6kVeL1g4c_2DvI/assets/images/processors/mastercard.svg?fit=max&auto=format&n=Qw6kVeL1g4c_2DvI&q=85&s=e356c2ad1c351d07e1b855520d9bc57a" alt="Mastercard" width="28" style={{display: "inline", verticalAlign: "middle", marginRight: "8px"}} data-path="assets/images/processors/mastercard.svg" />Mastercard Gateway

**Type**: `mastercard` | **Where to find credentials**: Mastercard Gateway Merchant Administration portal

```ts theme={null}
options: {
  merchantId: 'your-merchant-id',
  password: 'your-api-password',
  gatewayUrl: 'https://your-gateway.mastercard.com/api/rest',
}
```

| Field                   | Type    | Required | Description                                      |
| ----------------------- | ------- | -------- | ------------------------------------------------ |
| `merchantId`            | string  | **Yes**  | Merchant ID from your Mastercard Gateway account |
| `password`              | string  | **Yes**  | API password (not your login password)           |
| `gatewayUrl`            | string  | **Yes**  | Your gateway API URL (region-specific)           |
| `apiVersion`            | string  | No       | API version (defaults to latest)                 |
| `testMode`              | boolean | No       | Use test mode                                    |
| `descriptor`            | object  | No       | Statement descriptor override                    |
| `acquirerBinVisa`       | string  | No       | Acquirer BIN for Visa 3DS                        |
| `acquirerBinMastercard` | string  | No       | Acquirer BIN for Mastercard 3DS                  |

***

## Authorize.Net

**Type**: `authorizenet` | **Where to find credentials**: [Authorize.Net Merchant Interface → Account → API Credentials & Keys](https://account.authorize.net)

```ts theme={null}
options: {
  apiLoginId: 'your-api-login-id',
  transactionKey: 'your-transaction-key',
}
```

| Field            | Type    | Required | Description                                    |
| ---------------- | ------- | -------- | ---------------------------------------------- |
| `apiLoginId`     | string  | **Yes**  | API Login ID                                   |
| `transactionKey` | string  | **Yes**  | Transaction Key                                |
| `clientKey`      | string  | No       | Public client key (for Accept.js tokenization) |
| `testMode`       | boolean | No       | Use sandbox environment                        |

***

## <img src="https://mintcdn.com/tagadapay/Qw6kVeL1g4c_2DvI/assets/images/processors/finix.jpg?fit=max&auto=format&n=Qw6kVeL1g4c_2DvI&q=85&s=deec27300f2623f80dcb48b4604304eb" alt="Finix" width="28" style={{display: "inline", verticalAlign: "middle", marginRight: "8px"}} data-path="assets/images/processors/finix.jpg" />Finix

**Type**: `finix` | **Where to find credentials**: Finix Dashboard → Settings → API Keys

```ts theme={null}
options: {
  username: 'your-finix-username',
  password: 'your-finix-password',
  merchantId: 'your-merchant-id',
}
```

| Field           | Type    | Required | Description                |
| --------------- | ------- | -------- | -------------------------- |
| `username`      | string  | **Yes**  | Finix API username         |
| `password`      | string  | **Yes**  | Finix API password         |
| `merchantId`    | string  | **Yes**  | Finix merchant identity ID |
| `sandboxed`     | boolean | No       | Use sandbox environment    |
| `webhookSecret` | string  | No       | Webhook signing secret     |

***

## <img src="https://mintcdn.com/tagadapay/Qw6kVeL1g4c_2DvI/assets/images/processors/ngenius.png?fit=max&auto=format&n=Qw6kVeL1g4c_2DvI&q=85&s=678b919d05025ce88eb45d7296117efd" alt="N-Genius" width="28" style={{display: "inline", verticalAlign: "middle", marginRight: "8px"}} data-path="assets/images/processors/ngenius.png" />Network Ngenius

**Type**: `ngenius` | **Where to find credentials**: N-Genius Online Portal → Settings → API Keys

```ts theme={null}
options: {
  apiKey: 'your-api-key',
  outlet: 'your-outlet-reference',
  apiUrl: 'https://api-gateway.ngenius-payments.com',
}
```

| Field       | Type    | Required | Description                                                           |
| ----------- | ------- | -------- | --------------------------------------------------------------------- |
| `apiKey`    | string  | **Yes**  | N-Genius API key                                                      |
| `outlet`    | string  | **Yes**  | Outlet reference ID                                                   |
| `apiUrl`    | string  | **Yes**  | API gateway URL (must end with a lowercase letter, no trailing slash) |
| `sandboxed` | boolean | No       | Use sandbox environment                                               |

***

## <img src="https://mintcdn.com/tagadapay/Qw6kVeL1g4c_2DvI/assets/images/processors/ccavenue.png?fit=max&auto=format&n=Qw6kVeL1g4c_2DvI&q=85&s=98fa0196400fb3c213c32d19ef041d0a" alt="CCAvenue" width="28" style={{display: "inline", verticalAlign: "middle", marginRight: "8px"}} data-path="assets/images/processors/ccavenue.png" />CCAvenue

**Type**: `ccavenue` | **Where to find credentials**: CCAvenue Merchant Portal → Settings → API Keys

```ts theme={null}
options: {
  accessCode: 'your-access-code',
  workingKey: 'your-working-key',
  merchantId: 'your-merchant-id',
}
```

| Field        | Type    | Required | Description                       |
| ------------ | ------- | -------- | --------------------------------- |
| `accessCode` | string  | **Yes**  | CCAvenue access code              |
| `workingKey` | string  | **Yes**  | CCAvenue working (encryption) key |
| `merchantId` | string  | **Yes**  | CCAvenue merchant ID              |
| `testMode`   | boolean | No       | Use test mode                     |

***

## <img src="https://mintcdn.com/tagadapay/Qw6kVeL1g4c_2DvI/assets/images/processors/ovri.png?fit=max&auto=format&n=Qw6kVeL1g4c_2DvI&q=85&s=7a3733aa86b2693eca3fb6490ec4d3b1" alt="Ovri" width="28" style={{display: "inline", verticalAlign: "middle", marginRight: "8px"}} data-path="assets/images/processors/ovri.png" />Ovri

**Type**: `ovri` | **Where to find credentials**: Ovri Back Office → Configuration → API

```ts theme={null}
options: {
  apiKey: 'your-api-key',
  websiteKey: 'your-website-key',
  secretKeyPos: 'your-secret-pos-key',
}
```

| Field          | Type    | Required | Description         |
| -------------- | ------- | -------- | ------------------- |
| `apiKey`       | string  | **Yes**  | Ovri API key        |
| `websiteKey`   | string  | **Yes**  | Ovri website key    |
| `secretKeyPos` | string  | **Yes**  | Ovri secret POS key |
| `testMode`     | boolean | No       | Use test mode       |

***

## <img src="https://mintcdn.com/tagadapay/Qw6kVeL1g4c_2DvI/assets/images/processors/kesspay.png?fit=max&auto=format&n=Qw6kVeL1g4c_2DvI&q=85&s=7523ccbc1c9c5db6cd33b4641de946ea" alt="KessPay" width="28" style={{display: "inline", verticalAlign: "middle", marginRight: "8px"}} data-path="assets/images/processors/kesspay.png" />KessPay

**Type**: `kesspay` | **Where to find credentials**: KessPay Merchant Portal

```ts theme={null}
options: {
  clientId: 'your-client-id',
  clientSecret: 'your-client-secret',
  username: 'your-username',
  password: 'your-password',
  sellerCode: 'your-seller-code',
  apiSecretKey: 'your-api-secret',
  publicKey: 'your-public-key',
}
```

| Field          | Type    | Required | Description              |
| -------------- | ------- | -------- | ------------------------ |
| `clientId`     | string  | **Yes**  | KessPay client ID        |
| `clientSecret` | string  | **Yes**  | KessPay client secret    |
| `username`     | string  | **Yes**  | KessPay API username     |
| `password`     | string  | **Yes**  | KessPay API password     |
| `sellerCode`   | string  | **Yes**  | Seller code              |
| `apiSecretKey` | string  | **Yes**  | API secret key           |
| `publicKey`    | string  | **Yes**  | Public key               |
| `testMode`     | boolean | No       | Use test mode            |
| `notifyUrl`    | string  | No       | Webhook notification URL |

***

## <img src="https://mintcdn.com/tagadapay/Qw6kVeL1g4c_2DvI/assets/images/processors/trustflow.png?fit=max&auto=format&n=Qw6kVeL1g4c_2DvI&q=85&s=03ef9281029fdcb54388c2ad90d2512e" alt="Trust Flow" width="28" style={{display: "inline", verticalAlign: "middle", marginRight: "8px"}} data-path="assets/images/processors/trustflow.png" />Trust Flow

**Type**: `trustflow` | **Where to find credentials**: Trust Flow Merchant Portal

```ts theme={null}
options: {
  appId: 'your-app-id',
  secretKey: 'your-secret-key',
}
```

| Field       | Type    | Required | Description               |
| ----------- | ------- | -------- | ------------------------- |
| `appId`     | string  | **Yes**  | Trust Flow application ID |
| `secretKey` | string  | **Yes**  | Trust Flow secret key     |
| `testMode`  | boolean | No       | Use test mode             |

***

## <img src="https://mintcdn.com/tagadapay/Qw6kVeL1g4c_2DvI/assets/images/processors/convesio.svg?fit=max&auto=format&n=Qw6kVeL1g4c_2DvI&q=85&s=7d76397670dbf25ac32d2e491540bce7" alt="ConvesioPay" width="28" style={{display: "inline", verticalAlign: "middle", marginRight: "8px"}} data-path="assets/images/processors/convesio.svg" />ConvesioPay

**Type**: `convesio` | **Where to find credentials**: ConvesioPay Dashboard

```ts theme={null}
options: {
  secretKey: 'your-secret-key',
  integrationName: 'your-integration-name',
}
```

| Field             | Type    | Required | Description                                |
| ----------------- | ------- | -------- | ------------------------------------------ |
| `secretKey`       | string  | **Yes**  | ConvesioPay secret key                     |
| `integrationName` | string  | **Yes**  | Integration name configured in ConvesioPay |
| `webhookSecret`   | string  | No       | Webhook signing secret                     |
| `testMode`        | boolean | No       | Use test mode                              |

***

## Tap

**Type**: `tap` | **Where to find credentials**: [Tap Dashboard → goSell → API Keys](https://dashboard.tap.company)

```ts theme={null}
options: {
  apiKey: 'sk_live_...',
  merchantId: 'your-merchant-id',
}
```

| Field          | Type    | Required | Description                            |
| -------------- | ------- | -------- | -------------------------------------- |
| `apiKey`       | string  | **Yes**  | Tap secret API key                     |
| `merchantId`   | string  | **Yes**  | Tap merchant ID                        |
| `testMode`     | boolean | No       | Use test mode                          |
| `descriptor`   | object  | No       | Statement descriptor override          |
| `threeDSecure` | boolean | No       | Enable 3D Secure                       |
| `saveCard`     | boolean | No       | Allow saving cards for future payments |
| `receiptEmail` | boolean | No       | Send receipt email via Tap             |
| `receiptSms`   | boolean | No       | Send receipt SMS via Tap               |

***

## <img src="https://mintcdn.com/tagadapay/Qw6kVeL1g4c_2DvI/assets/images/processors/tagadapay.png?fit=max&auto=format&n=Qw6kVeL1g4c_2DvI&q=85&s=4a5371f4dc887f9bac77936716b3f7fc" alt="TagadaPay" width="28" style={{display: "inline", verticalAlign: "middle", marginRight: "8px"}} data-path="assets/images/processors/tagadapay.png" />TagadaPay

**Type**: `tagadapay` | **How it works**: Managed payment processing by TagadaPay. You provide your account ID and TagadaPay handles the rest.

```ts theme={null}
options: {
  accountId: 'acct_...',
}
```

| Field        | Type    | Required | Description                   |
| ------------ | ------- | -------- | ----------------------------- |
| `accountId`  | string  | **Yes**  | Your TagadaPay account ID     |
| `testMode`   | boolean | No       | Use test mode                 |
| `descriptor` | object  | No       | Statement descriptor override |

<Info>
  Contact TagadaPay support to enable this processor and get your account ID.
</Info>

***

## Descriptor Fields

Several processors support a `descriptor` object for customizing the statement descriptor shown on customer bank statements:

```ts theme={null}
descriptor: {
  descriptor: 'MYCOMPANY',
  descriptor_suffix: 'Order',
  phone: '+1-555-0100',
  address: '123 Main St',
  city: 'New York',
  state: 'NY',
  postal: '10001',
  country: 'US',
  mcc: '5411',
  merchantId: 'MERCH001',
  url: 'https://mycompany.com',
}
```

All descriptor fields are optional. Not all processors support all fields — check your gateway's documentation for supported descriptor options.

***

## Full Example

Here's a complete example connecting Stripe with all common options:

```ts theme={null}
import Tagada from '@tagadapay/node-sdk';
const tagada = new Tagada('your-api-key');

const { processor } = await tagada.processors.create({
  processor: {
    name: 'Stripe US',
    type: 'stripe',
    enabled: true,
    supportedCurrencies: ['USD', 'EUR', 'GBP'],
    baseCurrency: 'USD',
    options: {
      secretKey: 'sk_live_...',
      publicKey: 'pk_live_...',
      webhookSecret: 'whsec_...',
      descriptor: {
        descriptor: 'MYSHOP',
      },
      radar: {
        enabled: true,
        publishableKey: 'pk_live_...',
      },
    },
  },
});

console.log('Created:', processor.id);
```

***

## Next Steps

<CardGroup cols={2}>
  <Card title="Merchant Quick Start" icon="rocket" href="/developer-tools/node-sdk/merchant-quickstart">
    Full 7-step setup from processor to live checkout
  </Card>

  <Card title="Multi-PSP Routing" icon="route" href="/developer-tools/node-sdk/multi-stripe-routing">
    Connect multiple processors and cascade transactions
  </Card>

  <Card title="Sandbox Testing" icon="flask-vial" href="/developer-tools/node-sdk/sandbox-testing">
    Test payments without real money
  </Card>
</CardGroup>
