# Get started with Card Issuing

xMoney Card Issuing is a whitelabel service for partners that want to offer payment cards and financial accounts inside their own product. The partner owns the customer relationship and user experience, while xMoney provides the regulated account, KYC, card issuing, funding, transaction, and 3D Secure infrastructure.

This guide covers the standard customer card issuing flow for a whitelabel card program.

## Before you start

You need:

- A partner identifier or partner API key from xMoney, depending on the onboarding method used by your integration.
- Card product IDs available for your card program.
- A webhook URL and signing secret configured with xMoney.
- Staging and production API base URLs assigned to your integration.
- A tested customer onboarding flow for KYC and account creation.


## End-to-end flow

```mermaid
flowchart TD
  partnerSetup["Partner setup"] --> registerCustomer["Register customer"]
  registerCustomer --> authenticateCustomer["Authenticate customer"]
  authenticateCustomer --> completeKyc["Complete KYC"]
  completeKyc --> createAccount["Create account"]
  createAccount --> issueCard["Issue card"]
  issueCard --> fundAccount["Fund account"]
  fundAccount --> transact["Use card"]
  transact --> handle3ds["Handle 3D Secure"]
  handle3ds --> monitor["Monitor transactions and webhooks"]
```

## Main API areas

| Area | Main routes |
|  --- | --- |
| Authentication | `/v1/auth/register/partner`, `/v1/auth/login/partner`, email and wallet auth routes |
| KYC | `/v1/kyc`, `/v1/kyc/agreement`, `/v1/kyc/personal-info`, hosted ID and POA verification starts |
| Accounts | `/v1/accounts`, `/v1/accounts/{accountId}/close` |
| Cards | `/v1/cards`, `/v1/cards/{id}/freeze`, `/v1/cards/{id}/unfreeze`, `/v1/cards/{id}/reissue/{reason}` |
| Funding | `/v1/topups`, `/v1/topups/fiat`, `/v1/topups/crypto/*` |
| Transactions | `/v1/transactions`, `/v1/transactions/3d-secure`, `/v1/transactions/{transactionId}` |
| Webhooks | `kycStatusChanged`, `cardStatusChanged`, `transaction3dsRequested`, `transaction3dsCompleted`, `transactionCreated`, `transactionSettled`, `topupCreated`, `topupStatusChanged` |


## Recommended integration sequence

1. Register or identify the customer.
2. Authenticate the customer and store the returned access and refresh tokens securely.
3. Complete KYC data collection and hosted verification.
4. Create the customer account for the card currency.
5. Issue a virtual or physical card using the card product assigned to your program.
6. Fund the account with fiat or crypto topups.
7. Use transaction and webhook events to keep your app state synchronized.


Continue with [Customer onboarding](/guides/card-issuing/customer-onboarding).