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

# Initiate Payment

> Create a new cryptocurrency payment transaction

<Note>
  **Auth method: Basic (Access ID)** — this endpoint only requires your
  `x-access-id` header. No request signing is needed. See
  [Authentication](/api-reference/authentication#basic-access-id-authentication).
</Note>

## Headers

<ParamField header="x-access-id" type="string" required>
  Your API access ID provided by Tender

  **Example:** `"your-access-id-here"`
</ParamField>

<ParamField header="Content-Type" type="string" required>
  Media type of the request body

  **Example:** `"application/json"`
</ParamField>

## Body

<ParamField body="amount" type="string" required>
  Payment amount in the specified currency

  **Example:** `"1.023"`
</ParamField>

<ParamField body="chain" type="string" required>
  Blockchain network to use for the transaction

  **Example:** `"avalanche"`
</ParamField>

<ParamField body="coin" type="string" required>
  Cryptocurrency coin for the payment

  **Example:** `"avalanche"`
</ParamField>

<ParamField body="reference" type="string">
  Optional reference or transaction ID for your own tracking purposes

  **Example:** `"ORDER-12345"`
</ParamField>

<ParamField body="meta" type="object">
  Optional metadata attached to the payment

  <Expandable title="meta properties">
    <ParamField body="meta.customerEmail" type="string">
      The customer's email address

      **Example:** `"customer@example.com"`
    </ParamField>
  </Expandable>
</ParamField>

## Response

<ResponseField name="status" type="string" required>
  Status of the API request

  **Example:** `"success"`
</ResponseField>

<ResponseField name="message" type="string" required>
  Human-readable message describing the result

  **Example:** `"success"`
</ResponseField>

<ResponseField name="data" type="object" required>
  The initiated payment transaction details (uses formatTransactionResponse structure)

  <Expandable title="data properties">
    <ResponseField name="_id" type="string">
      Unique MongoDB identifier for the transaction

      **Example:** `"66aec7de809b7f45c42a49f9"`
    </ResponseField>

    <ResponseField name="type" type="string">
      Transaction type

      **Example:** `"receive"`
    </ResponseField>

    <ResponseField name="chain" type="string">
      Blockchain network used

      **Example:** `"avalanche"`
    </ResponseField>

    <ResponseField name="chainId" type="object">
      Detailed blockchain network information

      <Expandable title="chainId properties">
        <ResponseField name="_id" type="string">
          Chain MongoDB ID

          **Example:** `"64f782bb4278fc475eb30e29"`
        </ResponseField>

        <ResponseField name="name" type="string">
          Chain display name

          **Example:** `"Avalanche"`
        </ResponseField>

        <ResponseField name="icon" type="string">
          Chain icon URL

          **Example:** `"https://example.com/avalanche.png"`
        </ResponseField>

        <ResponseField name="id" type="string">
          Chain identifier

          **Example:** `"avalanche"`
        </ResponseField>

        <ResponseField name="coin" type="string">
          Native coin symbol

          **Example:** `"AVAX"`
        </ResponseField>

        <ResponseField name="status" type="string">
          Chain status

          **Example:** `"active"`
        </ResponseField>

        <ResponseField name="explorer" type="string">
          Blockchain explorer URL

          **Example:** `"https://snowtrace.io"`
        </ResponseField>

        <ResponseField name="chainType" type="string">
          Type of blockchain

          **Example:** `"evm"`
        </ResponseField>

        <ResponseField name="allowPreFunded" type="boolean">
          Whether pre-funded wallets are allowed

          **Example:** `false`
        </ResponseField>

        <ResponseField name="isMultiChain" type="boolean">
          Whether this supports multiple chains

          **Example:** `false`
        </ResponseField>

        <ResponseField name="rpcUrl" type="string">
          RPC endpoint URL

          **Example:** `"https://api.avax.network/ext/bc/C/rpc"`
        </ResponseField>

        <ResponseField name="cType" type="string">
          Chain category type

          **Example:** `"blockchain"`
        </ResponseField>

        <ResponseField name="createdAt" type="string">
          ISO 8601 timestamp

          **Example:** `"2023-05-29T21:07:27.509Z"`
        </ResponseField>

        <ResponseField name="updatedAt" type="string">
          ISO 8601 timestamp

          **Example:** `"2023-05-29T21:07:27.509Z"`
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="currency" type="object">
      Detailed currency information

      <Expandable title="currency properties">
        <ResponseField name="_id" type="string">
          Currency MongoDB ID

          **Example:** `"64fc4cda43812c15552311d7"`
        </ResponseField>

        <ResponseField name="id" type="string">
          Currency identifier

          **Example:** `"avalanche"`
        </ResponseField>

        <ResponseField name="name" type="string">
          Currency full name

          **Example:** `"Avalanche"`
        </ResponseField>

        <ResponseField name="icon" type="string">
          Currency icon URL

          **Example:** `"https://example.com/avax.png"`
        </ResponseField>

        <ResponseField name="isContract" type="boolean">
          Whether this is a smart contract token

          **Example:** `false`
        </ResponseField>

        <ResponseField name="chains" type="array">
          Supported blockchain networks

          **Example:** `["avalanche"]`
        </ResponseField>

        <ResponseField name="symbol" type="string">
          Currency symbol

          **Example:** `"AVAX"`
        </ResponseField>

        <ResponseField name="priceTag" type="string">
          Price tracking identifier

          **Example:** `"avalanche-2"`
        </ResponseField>

        <ResponseField name="fee" type="string">
          Transaction fee

          **Example:** `"0.001"`
        </ResponseField>

        <ResponseField name="status" type="string">
          Currency status

          **Example:** `"active"`
        </ResponseField>

        <ResponseField name="type" type="string">
          Currency type

          **Example:** `"native"`
        </ResponseField>

        <ResponseField name="createdAt" type="string">
          ISO 8601 timestamp

          **Example:** `"2023-05-29T21:07:27.509Z"`
        </ResponseField>

        <ResponseField name="updatedAt" type="string">
          ISO 8601 timestamp

          **Example:** `"2023-05-29T21:07:27.509Z"`
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="walletAddress" type="string">
      Destination wallet address for payment

      **Example:** `"0x40b95eddeeac0776ebefc3963bb9ba7d22cbd065"`
    </ResponseField>

    <ResponseField name="walletAddressIndex" type="string">
      Index of the wallet address

      **Example:** `"7"`
    </ResponseField>

    <ResponseField name="amount" type="string">
      Amount in cryptocurrency

      **Example:** `"0.023741"`
    </ResponseField>

    <ResponseField name="usdAmount" type="string">
      Equivalent amount in USD

      **Example:** `"1.02"`
    </ResponseField>

    <ResponseField name="coinAmount" type="string">
      Amount in the specified cryptocurrency

      **Example:** `"0.023741"`
    </ResponseField>

    <ResponseField name="fee" type="string">
      Transaction fee in cryptocurrency

      **Example:** `"0.00023741"`
    </ResponseField>

    <ResponseField name="feeUSD" type="string">
      Transaction fee in USD

      **Example:** `"0.0102"`
    </ResponseField>

    <ResponseField name="feeSent" type="boolean">
      Whether the fee has been sent

      **Example:** `false`
    </ResponseField>

    <ResponseField name="activationFee" type="string">
      Wallet activation fee if applicable

      **Example:** `"0"`
    </ResponseField>

    <ResponseField name="activationFeeUSD" type="string">
      Wallet activation fee in USD

      **Example:** `"0"`
    </ResponseField>

    <ResponseField name="rate" type="string">
      Exchange rate used for conversion

      **Example:** `"43.09"`
    </ResponseField>

    <ResponseField name="agentId" type="object">
      Agent details receiving the payment

      <Expandable title="agentId properties">
        <ResponseField name="_id" type="string">
          Agent MongoDB ID

          **Example:** `"6538eaaebdec6d1a21978e6a"`
        </ResponseField>

        <ResponseField name="firstName" type="string">
          Agent first name

          **Example:** `"John"`
        </ResponseField>

        <ResponseField name="lastName" type="string">
          Agent last name

          **Example:** `"Doe"`
        </ResponseField>

        <ResponseField name="email" type="string">
          Agent email address

          **Example:** `"john@example.com"`
        </ResponseField>

        <ResponseField name="avatar" type="string">
          Agent avatar URL

          **Example:** `"https://example.com/avatar.jpg"`
        </ResponseField>

        <ResponseField name="phoneNumber" type="string">
          Agent phone number

          **Example:** `"+1234567890"`
        </ResponseField>

        <ResponseField name="location" type="string">
          Agent location

          **Example:** `"New York, USA"`
        </ResponseField>

        <ResponseField name="totalSales" type="string">
          Total sales amount

          **Example:** `"1500.50"`
        </ResponseField>

        <ResponseField name="country" type="string">
          Agent country

          **Example:** `"USA"`
        </ResponseField>

        <ResponseField name="address" type="string">
          Agent address

          **Example:** `"123 Main St"`
        </ResponseField>

        <ResponseField name="active" type="boolean">
          Whether agent is active

          **Example:** `true`
        </ResponseField>

        <ResponseField name="agentId" type="string">
          Agent unique identifier

          **Example:** `"AGT-001"`
        </ResponseField>

        <ResponseField name="walletBalance" type="string">
          Agent wallet balance

          **Example:** `"500.00"`
        </ResponseField>

        <ResponseField name="merchantId" type="string">
          Associated merchant ID

          **Example:** `"6538e8f9bdec6d1a21978a64"`
        </ResponseField>

        <ResponseField name="defaultFiatCurrency" type="object">
          Agent's default fiat currency settings

          <Expandable title="defaultFiatCurrency properties">
            <ResponseField name="currency" type="string">
              Currency code

              **Example:** `"USD"`
            </ResponseField>

            <ResponseField name="rate" type="string">
              Conversion rate

              **Example:** `"1"`
            </ResponseField>

            <ResponseField name="useSystemRate" type="boolean">
              Whether to use system rate

              **Example:** `true`
            </ResponseField>
          </Expandable>
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="merchantId" type="object">
      Merchant details associated with the transaction

      <Expandable title="merchantId properties">
        <ResponseField name="_id" type="string">
          Merchant MongoDB ID

          **Example:** `"6538e8f9bdec6d1a21978a64"`
        </ResponseField>

        <ResponseField name="firstName" type="string">
          Merchant first name

          **Example:** `"Jane"`
        </ResponseField>

        <ResponseField name="lastName" type="string">
          Merchant last name

          **Example:** `"Smith"`
        </ResponseField>

        <ResponseField name="email" type="string">
          Merchant email address

          **Example:** `"jane@example.com"`
        </ResponseField>

        <ResponseField name="avatar" type="string">
          Merchant avatar URL

          **Example:** `"https://example.com/merchant-avatar.jpg"`
        </ResponseField>

        <ResponseField name="phoneNumber" type="string">
          Merchant phone number

          **Example:** `"+1234567890"`
        </ResponseField>

        <ResponseField name="active" type="boolean">
          Whether merchant is active

          **Example:** `true`
        </ResponseField>

        <ResponseField name="logo" type="string">
          Merchant logo URL

          **Example:** `"https://example.com/logo.png"`
        </ResponseField>

        <ResponseField name="merchantName" type="string">
          Merchant business name

          **Example:** `"Example Store"`
        </ResponseField>

        <ResponseField name="merchantDescription" type="string">
          Merchant description

          **Example:** `"Online retail store"`
        </ResponseField>

        <ResponseField name="twoFAStatus" type="boolean">
          Two-factor authentication status

          **Example:** `false`
        </ResponseField>

        <ResponseField name="kycVerified" type="boolean">
          KYC verification status

          **Example:** `false`
        </ResponseField>

        <ResponseField name="kycSubmitted" type="boolean">
          KYC submission status

          **Example:** `false`
        </ResponseField>

        <ResponseField name="instantConvert" type="boolean">
          Instant conversion enabled

          **Example:** `false`
        </ResponseField>

        <ResponseField name="defaultCurrency" type="string">
          Default currency

          **Example:** `"USD"`
        </ResponseField>

        <ResponseField name="walletBalance" type="string">
          Merchant wallet balance

          **Example:** `"1000.00"`
        </ResponseField>

        <ResponseField name="isDeleted" type="boolean">
          Whether merchant is deleted

          **Example:** `false`
        </ResponseField>

        <ResponseField name="walletRegenerated" type="boolean">
          Whether wallet was regenerated

          **Example:** `false`
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="fundTransferred" type="boolean">
      Whether funds have been transferred

      **Example:** `false`
    </ResponseField>

    <ResponseField name="contractAddress" type="string">
      Smart contract address (empty for native tokens)

      **Example:** `""`
    </ResponseField>

    <ResponseField name="status" type="string">
      Current status of the transaction

      **Example:** `"pending"`
    </ResponseField>

    <ResponseField name="paymentBlacklisted" type="boolean">
      Whether payment is blacklisted

      **Example:** `false`
    </ResponseField>

    <ResponseField name="amountReceived" type="string">
      Actual amount received

      **Example:** `"0"`
    </ResponseField>

    <ResponseField name="amountReceivedUSD" type="string">
      Amount received in USD

      **Example:** `"0"`
    </ResponseField>

    <ResponseField name="balanceRequired" type="string">
      Balance still required

      **Example:** `"0.023741"`
    </ResponseField>

    <ResponseField name="balanceRequiredUSD" type="string">
      Balance required in USD

      **Example:** `"1.02"`
    </ResponseField>

    <ResponseField name="isPartialPayment" type="boolean">
      Whether this is a partial payment

      **Example:** `false`
    </ResponseField>

    <ResponseField name="agentAmount" type="string">
      Amount in agent's local currency

      **Example:** `"1.023"`
    </ResponseField>

    <ResponseField name="amountReceivedAgent" type="string">
      Amount received in agent's currency

      **Example:** `"0"`
    </ResponseField>

    <ResponseField name="balanceRequiredAgent" type="string">
      Balance required in agent's currency

      **Example:** `"1.023"`
    </ResponseField>

    <ResponseField name="txId" type="string">
      Unique transaction identifier

      **Example:** `"66aec7de809b7f45c42a49f9"`
    </ResponseField>

    <ResponseField name="createdAt" type="string">
      ISO 8601 timestamp when the transaction was created

      **Example:** `"2023-05-29T21:07:27.509Z"`
    </ResponseField>

    <ResponseField name="updatedAt" type="string">
      ISO 8601 timestamp when the transaction was last updated

      **Example:** `"2023-05-29T21:07:27.509Z"`
    </ResponseField>
  </Expandable>
</ResponseField>


## OpenAPI

````yaml POST /v1/api/payment/initiate
openapi: 3.1.0
info:
  title: Tender API
  description: Tender Developer API for cryptocurrency payments and agent management
  version: 1.0.0
  contact:
    name: Tender Support
    url: https://tender.cash
servers:
  - url: https://secureapi.tender.cash
    description: Production Server
  - url: https://sandbox-api.tender.cash
    description: Sandbox Server
security:
  - SignedAuth: []
tags:
  - name: Agents
    description: Manage agents and sub-businesses
  - name: Transactions
    description: Payment and transaction operations
  - name: System
    description: System information and configuration
  - name: Webhooks
    description: Webhook management and logs
  - name: On-ramp
    description: Fiat-to-crypto on-ramp operations
  - name: Payouts
    description: Send crypto from merchant balance to a wallet address or payout account
  - name: Subwallets
    description: Provision and manage crypto wallet infrastructure for your end-users
paths:
  /v1/api/payment/initiate:
    post:
      tags:
        - Transactions
      summary: Initiate Payment
      description: Create a new payment transaction
      operationId: initiatePayment
      parameters:
        - name: x-access-id
          in: header
          required: true
          description: Your API access ID provided by Tender
          schema:
            type: string
          example: your-access-id-here
        - name: Content-Type
          in: header
          required: true
          description: Media type of the request body
          schema:
            type: string
          example: application/json
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InitiatePaymentRequest'
            example:
              amount: '10.00'
              chain: ethereum
              coin: usdc
              reference: ORDER-12345
              meta:
                customerEmail: customer@example.com
      responses:
        '200':
          description: Payment initiated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InitiatePaymentResponse'
      security:
        - AccessIdAuth: []
components:
  schemas:
    InitiatePaymentRequest:
      type: object
      required:
        - amount
        - chain
        - coin
      properties:
        amount:
          type: string
          description: Payment amount
          example: '1.023'
        chain:
          type: string
          description: Blockchain network
          example: avalanche
        coin:
          type: string
          description: Cryptocurrency coin
          example: avalanche
        reference:
          type: string
          description: Optional reference or transaction ID for your own tracking purposes
          example: ORDER-12345
        meta:
          type: object
          description: Optional metadata attached to the payment
          properties:
            customerEmail:
              type: string
              format: email
              description: The customer's email address
              example: customer@example.com
    InitiatePaymentResponse:
      type: object
      properties:
        status:
          type: string
        message:
          type: string
        data:
          type: object
          properties:
            type:
              type: string
            chain:
              type: string
            chainId:
              type: string
            amount:
              type: string
            agentId:
              type: string
            merchantId:
              type: string
            usdAmount:
              type: string
            coinAmount:
              type: string
            fee:
              type: number
            feeUSD:
              type: number
            feeSent:
              type: boolean
            rate:
              type: number
            walletAddress:
              type: string
            walletAddressIndex:
              type: integer
            currency:
              type: string
            activationFee:
              type: number
            activationFeeUSD:
              type: number
            contractAddress:
              type: string
              nullable: true
            agentAmount:
              type: string
            agentRate:
              type: string
            agentCurrency:
              type: string
            txId:
              type: string
  securitySchemes:
    SignedAuth:
      type: apiKey
      in: header
      name: authorization
      description: >-
        Signed (HMAC) authentication. Required headers: x-access-id,
        x-request-id (UUID v4), x-timestamp (ISO 8601), and authorization
        (Base64 HMAC-SHA256 signature of {timeStamp, requestId, accessId} using
        your access secret).
    AccessIdAuth:
      type: apiKey
      in: header
      name: x-access-id
      description: >-
        Basic (Access ID) authentication. Only the x-access-id header is
        required; no request signing.

````