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

# Issue one card

> Single-item compatibility entry point. Prefer card_issue; quantity is not a bulk request on this method. Async issue. On stuck `processing` with no progress, IMBA closes the
document as `failed` with `error=issue_timeout` and sends webhook
`card_issue.status_changed`. Retry with a new `ext_id` (documents are
not deleted). Synchronous failures return JSON `{error,message}`.
For `ban_rus` products: phone must not be `+7…`, `country` ≠ `RU`,
Latin names.




## OpenAPI

````yaml /openapi/partner.openapi.yaml post /api/partner/card_issue_one
openapi: 3.1.0
info:
  title: IMBA Partner API
  version: 1.1.0
  summary: B2B Partner API for USDT settlement, cards, eSIM, gift cards, and KYT
  description: |
    B2B Partner API. Production host `https://imbawallet.com` (no sandbox).

    - Human docs: `https://api-docs.imbawallet.com` (guides + FAQ)
    - Authenticate with `POST /auth/v1/partner/token` (assertion JWT), then call
      `POST /api/partner/<function>` with `Authorization: Bearer <access_token>`
      and a JSON body. Resource ids are body fields, not URL segments.
    - Amounts are decimal strings.
    - Response timestamps are UTC RFC 3339 with `Z`.
    - Request time fields accept RFC 3339 or unix seconds (not milliseconds).
    - Catalog calls (`/api/partner/gift_offers`, `/api/partner/esim_offers`,
      `/api/partner/card_products`) are live availability and the live USDT price.
      There is no `/quote` or `/availability` path.
    - Order lookup: `POST /api/partner/document_get`. Secrets via product calls
      after fulfillment (card JWE, gift `epin`, eSIM LPA) — not in webhooks
      except `card.otp`.
    - Not in v1: purchase refund/cancel, card unfreeze, card replacement,
      card merchant transaction history.
  contact:
    name: IMBA Partner Support
    email: support@imbawallet.com
  license:
    name: Proprietary
    url: https://imbawallet.com
servers:
  - url: https://imbawallet.com
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Auth
    description: Assertion JWT → access token
  - name: Balance
    description: Partner settlement balance
  - name: Deposit
    description: Sticky USDT TRC-20 deposit address
  - name: Withdrawals
    description: USDT withdrawals from partner balance
  - name: Cards
    description: Card catalog, issue, list, secrets, topup, freeze
  - name: eSIM
    description: eSIM offers, purchase, topup
  - name: Gift cards
    description: Gift offers and purchases
  - name: Batch
    description: Mixed create cart (best-effort per item)
  - name: Documents
    description: Poll async documents by ext_id
  - name: Reconciliation
    description: Ledger lines for partner books
  - name: KYT
    description: Crypto-address screening, quotes and owned check history
paths:
  /api/partner/card_issue_one:
    post:
      tags:
        - Cards
      summary: Issue one card
      description: >
        Single-item compatibility entry point. Prefer card_issue; quantity is
        not a bulk request on this method. Async issue. On stuck `processing`
        with no progress, IMBA closes the

        document as `failed` with `error=issue_timeout` and sends webhook

        `card_issue.status_changed`. Retry with a new `ext_id` (documents are

        not deleted). Synchronous failures return JSON `{error,message}`.

        For `ban_rus` products: phone must not be `+7…`, `country` ≠ `RU`,

        Latin names.
      operationId: issueOnePartnerCard
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CardIssueRequest'
      responses:
        '202':
          description: Card issue accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CardIssueResponse'
        '409':
          $ref: '#/components/responses/Error'
        '422':
          $ref: '#/components/responses/Error'
components:
  schemas:
    CardIssueRequest:
      type: object
      required:
        - ext_id
        - card_product
        - cardholder
      properties:
        ext_id:
          $ref: '#/components/schemas/ExtId'
        card_product:
          type: integer
          example: 12
        cardholder:
          $ref: '#/components/schemas/Cardholder'
        quantity:
          type: integer
          minimum: 1
          maximum: 20
          default: 1
          description: Issue N cards (ext_id, ext_id#2, …); response includes items[]
    CardIssueResponse:
      type: object
      properties:
        ext_id:
          $ref: '#/components/schemas/ExtId'
        order_id:
          type: string
        card_id:
          type:
            - string
            - 'null'
        card_product:
          type: integer
        status:
          type: string
        created_at:
          type: string
          format: date-time
    ExtId:
      type: string
      minLength: 1
      maxLength: 128
      description: Partner-side idempotency key (unique per partner)
      example: card-issue-20260710-003
    Cardholder:
      type: object
      required:
        - first_name
        - last_name
        - phone
        - email
        - country
      description: >
        KYC for the end customer. Flat aliases
        address_line1/city/region/postal_code

        are accepted and normalized into nested address.*. For ban_rus products:

        phone must not be +7…, country ≠ RU, Latin first/last name.
      properties:
        first_name:
          type: string
        middle_name:
          type: string
        last_name:
          type: string
        birth_date:
          type: string
          format: date
        phone:
          type: string
          description: E.164; for ban_rus products must not be a Russian (+7) number
          example: '+35795196083'
        email:
          type: string
          format: email
        country:
          type: string
          description: ISO alpha-2; for ban_rus products must not be RU
          example: CY
        address:
          type: object
          properties:
            line1:
              type: string
            line2:
              type:
                - string
                - 'null'
            city:
              type: string
            region:
              type: string
            postal_code:
              type: string
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: string
          example: insufficient_balance
        message:
          type: string
          description: Optional human-readable explanation; handle the stable error code
  responses:
    Error:
      description: Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Access token from POST /auth/v1/partner/token

````

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