Telnyx x402 Payment Transactions API

Operations for x402 cryptocurrency payment transactions. Fund your Telnyx account using USDC stablecoin payments via the x402 protocol.

OpenAPI Specification

telnyx-x402-payment-transactions-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  contact:
    email: support@telnyx.com
  description: Telnyx provides global communications and connectivity APIs for developers — including SIP trunking, programmable voice, SMS, MMS, WhatsApp Business Messaging, Call Control, Fax, Wireless (IoT & eSIM), Phone Numbers (DID provisioning & porting), Emergency Services, and Network APIs for private interconnects and edge connectivity. Build, scale, and manage voice, messaging, and data networks with Telnyx's carrier-grade global infrastructure and API-first platform.
  title: Telnyx Access Tokens x402 Payment Transactions API
  version: 2.0.0
  x-endpoint-cost: light
servers:
- description: Version 2.0.0 of the Telnyx API
  url: https://api.telnyx.com/v2
security:
- bearerAuth: []
tags:
- description: Operations for x402 cryptocurrency payment transactions. Fund your Telnyx account using USDC stablecoin payments via the x402 protocol.
  name: x402 Payment Transactions
paths:
  /v2/x402/credit_account:
    post:
      description: Settles an x402 payment using the quote ID and a signed payment authorization. The payment signature can be provided via the `PAYMENT-SIGNATURE` header or the `payment_signature` body parameter. Settlement is idempotent — submitting the same quote ID multiple times returns the existing transaction.
      operationId: settleX402Payment
      parameters:
      - description: Signed payment authorization for the quote. Alternative to providing `payment_signature` in the request body.
        in: header
        name: PAYMENT-SIGNATURE
        required: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            example:
              id: quote_abc123
              payment_signature: 0xabc123...
            schema:
              $ref: '#/components/schemas/X402SettleRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/X402TransactionResponse'
          description: Payment already settled (idempotent response)
        '201':
          content:
            application/json:
              example:
                data:
                  amount: '50.00'
                  created_at: '2026-03-13T15:00:00Z'
                  currency: USD
                  id: de06811a-2e43-4561-af5a-7d0a26e20aaa
                  quote_id: quote_abc123
                  record_type: x402_transaction
                  status: settled
                  tx_hash: 0xabc123def456...
              schema:
                $ref: '#/components/schemas/X402TransactionResponse'
          description: Payment settled successfully
        '400':
          content:
            application/json:
              examples:
                expired_authorization:
                  summary: Expired payment authorization
                  value:
                    errors:
                    - code: expired_authorization
                      detail: 'Payment failed: the payment authorization has expired. Please request a new quote and try again.'
                      title: Payment Failed
                invalid_signature:
                  summary: Invalid payment signature
                  value:
                    errors:
                    - code: invalid_signature
                      detail: 'Payment failed: the payment signature is invalid. Please sign a new payment authorization.'
                      title: Payment Failed
              schema:
                $ref: '#/components/schemas/X402SettlementErrorResponse'
          description: Bad request — invalid signature, expired authorization, invalid nonce, or malformed payment payload
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/x402-transactions_ErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/x402-transactions_ErrorResponse'
          description: Forbidden — x402 payments not enabled, account tier ineligible, or account suspended
        '422':
          content:
            application/json:
              examples:
                insufficient_balance:
                  summary: Insufficient wallet balance
                  value:
                    errors:
                    - code: insufficient_balance
                      detail: 'Payment failed: your wallet does not have enough USDC to complete this transaction. Please add funds and try again.'
                      title: Payment Failed
                validation_error:
                  summary: Missing required parameter
                  value:
                    errors:
                    - code: unknown
                      detail: id is required
                      title: Invalid request
              schema:
                $ref: '#/components/schemas/X402SettlementErrorResponse'
          description: Unprocessable entity — missing required parameters or insufficient funds/allowance
        '500':
          content:
            application/json:
              example:
                errors:
                - code: transaction_failed
                  detail: Payment transaction failed on-chain. Your funds have not been transferred. Please try again or contact support.
                  title: Payment Failed
              schema:
                $ref: '#/components/schemas/X402SettlementErrorResponse'
          description: Internal server error — facilitator unavailable, transaction failed on-chain, or unknown error
        '502':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/x402-transactions_ErrorResponse'
          description: Bad gateway — upstream settlement service error
        '503':
          content:
            application/json:
              example:
                errors:
                - code: facilitator_timeout
                  detail: Payment processing timed out. Your funds have not been transferred. Please try again.
                  title: Payment Failed
              schema:
                $ref: '#/components/schemas/X402SettlementErrorResponse'
          description: Service unavailable — facilitator or settlement timeout
      summary: Settle a payment
      tags:
      - x402 Payment Transactions
      x-endpoint-cost: light
      x-latency-category: responsive
  /v2/x402/credit_account/quote:
    post:
      description: Creates a payment quote for the specified USD amount. Returns payment details including the x402 payment requirements, network, and expiration time. The quote must be settled before it expires.
      operationId: createX402Quote
      requestBody:
        content:
          application/json:
            example:
              amount_usd: '50.00'
            schema:
              $ref: '#/components/schemas/X402QuoteRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  amount_crypto: '50000000'
                  amount_usd: '50.00'
                  expires_at: '2026-03-13T15:05:00Z'
                  id: quote_abc123
                  network: eip155:8453
                  payment_requirements:
                    accepts:
                    - amount: '50000000'
                      asset: '0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
                      extra:
                        facilitatorUrl: https://api.cdp.coinbase.com/platform/v2/x402
                        name: USD Coin
                        quoteId: quote_abc123
                        version: '2'
                      maxTimeoutSeconds: 900
                      network: eip155:8453
                      payTo: '0x1234567890abcdef1234567890abcdef12345678'
                      scheme: exact
                    resource:
                      description: Payment of $50.00 USD
                      mimeType: application/json
                      url: https://api.telnyx.com/v2/x402/credit_account
                    x402Version: 2
                  record_type: quote
              schema:
                $ref: '#/components/schemas/X402QuoteResponse'
          description: Quote created successfully
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/x402-transactions_ErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/x402-transactions_ErrorResponse'
          description: Forbidden — x402 payments not enabled, account tier ineligible, or account suspended
        '422':
          content:
            application/json:
              example:
                errors:
                - code: unknown
                  detail: amount_usd must be at least 5.00
                  title: Invalid request
              schema:
                $ref: '#/components/schemas/x402-transactions_ErrorResponse'
          description: Unprocessable entity — invalid amount
        '502':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/x402-transactions_ErrorResponse'
          description: Bad gateway — upstream payment service failed to create quote
      summary: Create a payment quote
      tags:
      - x402 Payment Transactions
      x-endpoint-cost: light
      x-latency-category: responsive
components:
  schemas:
    x402-transactions_ErrorResponse:
      properties:
        errors:
          items:
            properties:
              code:
                type: string
              detail:
                type: string
              meta:
                properties:
                  url:
                    type: string
                type: object
              source:
                properties:
                  pointer:
                    type: string
                type: object
              title:
                type: string
            type: object
          type: array
      type: object
    X402QuoteRequest:
      properties:
        amount_usd:
          description: Amount in USD to fund (minimum 5.00, maximum 10000.00).
          example: '50.00'
          type: string
      required:
      - amount_usd
      type: object
    X402SettlementErrorResponse:
      description: Error response for x402 settlement failures. Uses string error codes from the x402 error handling system.
      properties:
        errors:
          items:
            properties:
              code:
                description: Machine-readable error code.
                enum:
                - invalid_signature
                - expired_authorization
                - invalid_nonce
                - insufficient_balance
                - insufficient_funds
                - insufficient_allowance
                - facilitator_unavailable
                - facilitator_timeout
                - settlement_timeout
                - transaction_failed
                - unknown
                type: string
              detail:
                description: Human-readable error description with guidance.
                type: string
              title:
                description: Short error title (e.g. "Payment Failed").
                type: string
            type: object
          type: array
      type: object
    X402SettleRequest:
      properties:
        id:
          description: The quote ID to settle.
          type: string
        payment_signature:
          description: Base64-encoded signed payment authorization (x402 PaymentPayload). Can alternatively be provided via the PAYMENT-SIGNATURE header.
          type: string
      required:
      - id
      type: object
    X402PaymentRequirements:
      description: x402 protocol v2 payment requirements. Contains all information needed to construct and sign a payment authorization.
      properties:
        accepts:
          description: Accepted payment schemes. Currently only the `exact` EVM scheme is supported.
          items:
            properties:
              amount:
                description: Amount in the token's smallest unit.
                type: string
              asset:
                description: Token contract address (e.g. USDC on Base).
                type: string
              extra:
                description: Additional scheme-specific parameters including EIP-712 domain info and the facilitator URL.
                properties:
                  facilitatorUrl:
                    type: string
                  name:
                    description: EIP-712 domain name (e.g. "USD Coin").
                    type: string
                  quoteId:
                    type: string
                  version:
                    description: EIP-712 domain version.
                    type: string
                type: object
              maxTimeoutSeconds:
                description: Maximum time in seconds before the payment authorization expires.
                type: integer
              network:
                description: Blockchain network identifier in CAIP-2 format (e.g. "eip155:8453" for Base).
                type: string
              payTo:
                description: Recipient wallet address.
                type: string
              scheme:
                description: Payment scheme (e.g. "exact").
                type: string
            type: object
          type: array
        resource:
          description: The resource being paid for. Included in the payment signature.
          properties:
            description:
              description: Human-readable description of the payment.
              type: string
            mimeType:
              description: MIME type of the resource.
              type: string
            url:
              description: Canonical URL of the payment resource.
              type: string
          type: object
        x402Version:
          description: x402 protocol version. Currently always 2.
          enum:
          - 2
          type: integer
      type: object
    X402QuoteResponse:
      properties:
        data:
          properties:
            amount_crypto:
              description: The equivalent amount in the payment cryptocurrency's smallest unit (e.g. USDC has 6 decimals, so $50.00 = "50000000").
              type: string
            amount_usd:
              description: The quoted amount in USD.
              type: string
            expires_at:
              description: ISO 8601 timestamp when the quote expires.
              format: date-time
              type: string
            id:
              description: Unique quote identifier. Use this to settle the payment.
              type: string
            network:
              description: The blockchain network for the payment in CAIP-2 format (e.g. eip155:8453 for Base).
              type: string
            payment_requirements:
              $ref: '#/components/schemas/X402PaymentRequirements'
            record_type:
              enum:
              - quote
              type: string
          type: object
      type: object
    X402TransactionResponse:
      properties:
        data:
          properties:
            amount:
              description: The transaction amount in the specified currency.
              type: string
            created_at:
              description: ISO 8601 timestamp when the transaction was created.
              format: date-time
              type: string
            currency:
              description: The currency of the transaction amount (e.g. USD).
              type: string
            id:
              description: Unique transaction identifier.
              type: string
            quote_id:
              description: The original quote ID associated with this transaction.
              type: string
            record_type:
              enum:
              - x402_transaction
              type: string
            status:
              description: The settlement status of the transaction.
              enum:
              - settled
              type: string
            tx_hash:
              description: The on-chain transaction hash, if available.
              nullable: true
              type: string
          type: object
      type: object
  securitySchemes:
    bearerAuth:
      scheme: bearer
      type: http
    branded-calling_bearerAuth:
      description: API key passed as a Bearer token in the Authorization header
      scheme: bearer
      type: http
    oauthClientAuth:
      description: OAuth 2.0 authentication for Telnyx API and MCP integrations
      flows:
        authorizationCode:
          authorizationUrl: https://api.telnyx.com/v2/oauth/authorize
          refreshUrl: https://api.telnyx.com/v2/oauth/token
          scopes:
            admin: Administrative access to Telnyx resources
          tokenUrl: https://api.telnyx.com/v2/oauth/token
        clientCredentials:
          scopes:
            admin: Administrative access to Telnyx resources
          tokenUrl: https://api.telnyx.com/v2/oauth/token
      type: oauth2
    outbound-voice-profiles_bearerAuth:
      bearerFormat: JWT
      scheme: bearer
      type: http
    pronunciation-dicts_bearerAuth:
      description: Telnyx API v2 key. Obtain from https://portal.telnyx.com
      scheme: bearer
      type: http
    stored-payment-transactions_bearerAuth:
      bearerFormat: JWT
      scheme: bearer
      type: http