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

# Create Crypto Payment Session

> Generates a new TRC20 USDT deposit address for collecting payments from clients.

Creates a dedicated collection session for USDT on TRC20, provisioning a deposit address.

### How It Works

1. The merchant creates a crypto payment session.
2. NexaPay provisions a dedicated collection session for that payment.
3. NexaPay generates a `USDT` `TRC20` deposit address.
4. The merchant shows that address to the customer.
5. NexaPay confirms the deposit.
6. NexaPay settles the session balance into its parent crypto balance flow.
7. The merchant's `USDT balance` is credited only after settlement succeeds.


## OpenAPI

````yaml POST /crypto/payments/create
openapi: 3.0.0
info:
  title: NexaPay Business API
  version: 1.0.0
  description: Server-to-server merchant integration API documentation.
servers:
  - url: https://api.nexapay.ng/api/v1/business
    description: Production Server
security: []
tags: []
paths:
  /crypto/payments/create:
    post:
      tags:
        - Crypto
      summary: Create crypto payment session
      description: >-
        Generates a new TRC20 USDT deposit address for collecting payments from
        clients.
      parameters:
        - $ref: '#/components/parameters/BusinessEnvHeader'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                businessId:
                  type: string
                  description: >-
                    The unique ID of the business profile (required for API key
                    authentication).
                amount:
                  type: number
                  description: Expected USDT amount.
                merchantCustomerId:
                  type: string
                  description: Identifier for the customer.
                merchantReference:
                  type: string
                  description: Unique reference ID for the payment.
                currency:
                  type: string
                  default: usdt
                  description: Only 'usdt' is supported.
                network:
                  type: string
                  default: trc20
                  description: Only 'trc20' is supported.
                expiresInMinutes:
                  type: integer
                  default: 60
                metadata:
                  type: object
              required:
                - businessId
                - amount
                - merchantCustomerId
                - merchantReference
      responses:
        '200':
          description: Payment session created successfully.
        '400':
          description: Invalid arguments.
      security:
        - ApiKeyAuth: []
components:
  parameters:
    BusinessEnvHeader:
      name: x-business-env
      in: header
      required: false
      schema:
        type: string
        enum:
          - prod
          - test
        default: prod
      description: Target environment selector (live production vs. simulated sandbox).
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: Merchant API Key (e.g., nexa-prod-... or nexa-test-...)

````