NOWPayments Payments API

Payment creation and management

OpenAPI Specification

now-payments-payments-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: NOWPayments Authentication Payments API
  description: 'NOWPayments is a crypto payment gateway that enables businesses to accept 300+ cryptocurrencies, create payment invoices, process recurring subscriptions, and manage merchant mass payouts. The API supports automatic coin conversion, IPN webhooks, and fiat withdrawals.

    '
  version: 1.0.0
  contact:
    name: NOWPayments Support
    email: support@nowpayments.io
    url: https://nowpayments.io/help
  termsOfService: https://nowpayments.io/terms
servers:
- url: https://api.nowpayments.io/v1
  description: Production server
- url: https://api.sandbox.nowpayments.io/v1
  description: Sandbox server
security:
- ApiKeyAuth: []
tags:
- name: Payments
  description: Payment creation and management
paths:
  /payment:
    post:
      operationId: createPayment
      summary: Create a payment
      description: 'Creates a new cryptocurrency payment. The customer will send crypto to the returned pay_address. Supports automatic coin conversion and IPN webhook notifications.

        '
      tags:
      - Payments
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePaymentRequest'
            example:
              price_amount: 100
              price_currency: usd
              pay_currency: btc
              ipn_callback_url: https://example.com/ipn
              order_id: ORDER-12345
              order_description: Apple Macbook Pro 2019 x 1
      responses:
        '201':
          description: Payment created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
    get:
      operationId: listPayments
      summary: List payments
      description: Returns a paginated list of all payments for the merchant account.
      tags:
      - Payments
      parameters:
      - name: limit
        in: query
        description: Number of records per page (default 10)
        schema:
          type: integer
          default: 10
          minimum: 1
          maximum: 500
      - name: page
        in: query
        description: Page number (0-indexed)
        schema:
          type: integer
          default: 0
          minimum: 0
      - name: sortBy
        in: query
        description: Field to sort by
        schema:
          type: string
          enum:
          - payment_id
          - payment_status
          - pay_address
          - price_amount
          - price_currency
          - pay_amount
          - pay_currency
          - order_id
          - created_at
          - updated_at
      - name: orderBy
        in: query
        description: Sort direction
        schema:
          type: string
          enum:
          - asc
          - desc
      - name: dateFrom
        in: query
        description: Filter payments from this date (ISO 8601)
        schema:
          type: string
          format: date-time
      - name: dateTo
        in: query
        description: Filter payments up to this date (ISO 8601)
        schema:
          type: string
          format: date-time
      responses:
        '200':
          description: List of payments
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentListResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /payment/{payment_id}:
    get:
      operationId: getPaymentStatus
      summary: Get payment status
      description: Returns the current status and details of a specific payment.
      tags:
      - Payments
      parameters:
      - name: payment_id
        in: path
        required: true
        description: Unique payment identifier
        schema:
          type: string
          example: '5045208125'
      responses:
        '200':
          description: Payment details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentStatusResponse'
              example:
                payment_id: 5045208125
                payment_status: waiting
                pay_address: 3EktnHQD7RiAE6uzMj2ZifT9YgRrkSgzQX
                price_amount: 100
                price_currency: usd
                pay_amount: 0.00267
                actually_paid: 0
                pay_currency: btc
                order_id: ORDER-12345
                order_description: Apple Macbook Pro 2019 x 1
                purchase_id: 4944856743
                created_at: '2021-01-15T12:00:00.000Z'
                updated_at: '2021-01-15T12:00:00.000Z'
                outcome_amount: 0.00267
                outcome_currency: btc
        '404':
          $ref: '#/components/responses/NotFound'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    PaymentResponse:
      type: object
      properties:
        payment_id:
          type: integer
          description: Unique payment identifier
        payment_status:
          type: string
          description: Current payment status
          enum:
          - waiting
          - confirming
          - confirmed
          - sending
          - partially_paid
          - finished
          - failed
          - refunded
          - expired
        pay_address:
          type: string
          description: Cryptocurrency address to which the customer should send payment
        price_amount:
          type: number
          format: double
          description: Requested payment amount in fiat currency
        price_currency:
          type: string
          description: Fiat currency of the price amount
        pay_amount:
          type: number
          format: double
          description: Amount to pay in cryptocurrency
        pay_currency:
          type: string
          description: Cryptocurrency for payment
        order_id:
          type: string
          description: Merchant order ID
        order_description:
          type: string
          description: Order description
        ipn_callback_url:
          type: string
          description: IPN callback URL
        created_at:
          type: string
          format: date-time
          description: Payment creation timestamp
        updated_at:
          type: string
          format: date-time
          description: Payment last update timestamp
        purchase_id:
          type: integer
          description: Purchase identifier
    PaymentListResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/PaymentStatusResponse'
        limit:
          type: integer
          description: Records per page
        page:
          type: integer
          description: Current page number
        pagesCount:
          type: integer
          description: Total number of pages
        total:
          type: integer
          description: Total number of payments
    CreatePaymentRequest:
      type: object
      required:
      - price_amount
      - price_currency
      - pay_currency
      properties:
        price_amount:
          type: number
          format: double
          description: Fiat equivalent of the price to be paid in crypto
          example: 100
        price_currency:
          type: string
          description: Fiat currency in which price_amount is specified (e.g., usd, eur)
          example: usd
        pay_amount:
          type: number
          format: double
          description: Amount users have to pay in crypto (overrides price_amount conversion)
        pay_currency:
          type: string
          description: Cryptocurrency in which to receive payment
          example: btc
        ipn_callback_url:
          type: string
          format: uri
          description: URL to receive IPN callback notifications
        order_id:
          type: string
          description: Merchant order ID for reconciliation
          example: ORDER-12345
        order_description:
          type: string
          description: Human-readable order description
          example: Apple Macbook Pro 2019 x 1
        purchase_id:
          type: string
          description: ID of existing purchase to create additional payment for
        payout_address:
          type: string
          description: Custom payout address (overrides account default)
        payout_currency:
          type: string
          description: Currency for the payout address (required when payout_address is specified)
        payout_extra_id:
          type: string
          description: Extra ID, memo, or tag for the payout address
        fixed_rate:
          type: boolean
          description: Use fixed exchange rate for the payment
    PaymentStatusResponse:
      allOf:
      - $ref: '#/components/schemas/PaymentResponse'
      - type: object
        properties:
          actually_paid:
            type: number
            format: double
            description: Amount actually received so far
          outcome_amount:
            type: number
            format: double
            description: Amount to be credited to merchant after conversion
          outcome_currency:
            type: string
            description: Currency of the outcome amount
    ErrorResponse:
      type: object
      properties:
        message:
          type: string
          description: Error message
        errors:
          type: array
          description: Detailed error list
          items:
            type: string
  responses:
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: Missing or invalid API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    BadRequest:
      description: Invalid request parameters
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: NOWPayments API key obtained from your merchant dashboard
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: JWT token obtained from the /auth endpoint (required for mass payout operations)
externalDocs:
  description: NOWPayments API Documentation
  url: https://nowpayments.io/help/api