Nuvei Payments API

Server-to-server REST API for processing card and APM transactions through Nuvei. Includes openOrder for session setup, payment for end-to-end transactions, settleTransaction for capturing pre-authorized amounts, refundTransaction for refunds, voidTransaction for cancellations, and getPaymentStatus for transaction state. Auth uses SHA-256 checksum over merchantId, merchantSiteId, clientRequestId, amount, currency, timeStamp, and merchantSecretKey.

Nuvei Payments API is one of 9 APIs that Nuvei publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 2 machine-runnable capabilities that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko and 2 JSON Schema definitions.

Tagged areas include Payments, Authorization, Settlement, Refund, and Void. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, 2 Naftiko capability specs, and 2 JSON Schemas.

OpenAPI Specification

nuvei-payments-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Nuvei Payments API
  description: |
    Server-to-server REST API for processing card and APM transactions through Nuvei.
    All endpoints accept JSON POST bodies and respond with JSON. Authentication is performed
    via a SHA-256 checksum over an ordered concatenation of merchantId, merchantSiteId,
    clientRequestId, amount, currency, timeStamp, and merchantSecretKey.
  version: "1.0"
  contact:
    name: Nuvei Developer Support
    url: https://docs.nuvei.com
    email: [email protected]
  license:
    name: Proprietary
servers:
- url: https://secure.safecharge.com/ppp/api/v1
  description: Production
- url: https://ppp-test.nuvei.com/ppp/api/v1
  description: Sandbox
tags:
- name: Payments
  description: End-to-end payment processing.
- name: Financial Operations
  description: Settle, void, and refund operations.
- name: Status
  description: Read-only transaction state.
paths:
  /payment.do:
    post:
      tags:
      - Payments
      summary: Create Payment
      operationId: createPayment
      description: |
        Performs an end-to-end PCI-compliant payment using card data, a UPO id, a temporary token
        from the Web SDK, or an APM payment option. The Nuvei platform handles 3DS2, fraud screening,
        and routing.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PaymentRequest"
      responses:
        "200":
          description: Payment result
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PaymentResponse"
  /settleTransaction.do:
    post:
      tags:
      - Financial Operations
      summary: Settle Transaction
      operationId: settleTransaction
      description: Captures a previously authorized transaction in full or in part using its
        relatedTransactionId.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/FinancialOperationRequest"
      responses:
        "200":
          description: Settle result
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FinancialOperationResponse"
  /voidTransaction.do:
    post:
      tags:
      - Financial Operations
      summary: Void Transaction
      operationId: voidTransaction
      description: Cancels a sale, credit, or APM transaction before it has been transmitted to the
        acquirer/scheme.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/FinancialOperationRequest"
      responses:
        "200":
          description: Void result
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FinancialOperationResponse"
  /refundTransaction.do:
    post:
      tags:
      - Financial Operations
      summary: Refund Transaction
      operationId: refundTransaction
      description: Refunds a settled transaction in full or in part. The relatedTransactionId is
        mandatory and must reference the original payment.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/FinancialOperationRequest"
      responses:
        "200":
          description: Refund result
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FinancialOperationResponse"
  /getPaymentStatus.do:
    post:
      tags:
      - Status
      summary: Get Payment Status
      operationId: getPaymentStatus
      description: Returns the final state of a payment. Should be called only at the end of payment
        processing.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/StatusRequest"
      responses:
        "200":
          description: Payment status
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PaymentResponse"
components:
  schemas:
    MerchantAuth:
      type: object
      required:
      - merchantId
      - merchantSiteId
      - timeStamp
      - checksum
      properties:
        merchantId:
          type: string
          description: Merchant identifier assigned by Nuvei.
        merchantSiteId:
          type: string
          description: Site identifier for the merchant.
        clientRequestId:
          type: string
          description: Idempotent client-side identifier for the request.
        timeStamp:
          type: string
          description: yyyyMMddHHmmss timestamp used in the checksum.
        checksum:
          type: string
          description: SHA-256 of merchantId|merchantSiteId|clientRequestId|amount|currency|timeStamp|merchantSecretKey.
    Money:
      type: object
      properties:
        amount:
          type: string
          description: Decimal amount as a string (e.g. "10.00").
        currency:
          type: string
          description: ISO 4217 currency code.
          example: USD
    PaymentRequest:
      allOf:
      - $ref: "#/components/schemas/MerchantAuth"
      - type: object
        required:
        - amount
        - currency
        properties:
          sessionToken:
            type: string
          userTokenId:
            type: string
          clientUniqueId:
            type: string
          amount:
            type: string
          currency:
            type: string
          paymentOption:
            $ref: "#/components/schemas/PaymentOption"
          billingAddress:
            $ref: "#/components/schemas/Address"
          shippingAddress:
            $ref: "#/components/schemas/Address"
          deviceDetails:
            $ref: "#/components/schemas/DeviceDetails"
          items:
            type: array
            items:
              $ref: "#/components/schemas/Item"
          urlDetails:
            $ref: "#/components/schemas/UrlDetails"
          isRebilling:
            type: integer
            enum: [0, 1]
    PaymentOption:
      type: object
      properties:
        card:
          $ref: "#/components/schemas/Card"
        alternativePaymentMethod:
          type: object
          additionalProperties: true
        userPaymentOptionId:
          type: string
    Card:
      type: object
      properties:
        cardNumber:
          type: string
        cardHolderName:
          type: string
        expirationMonth:
          type: string
        expirationYear:
          type: string
        CVV:
          type: string
        threeD:
          type: object
          additionalProperties: true
    Address:
      type: object
      properties:
        firstName:
          type: string
        lastName:
          type: string
        address:
          type: string
        city:
          type: string
        zip:
          type: string
        country:
          type: string
        email:
          type: string
        phone:
          type: string
    DeviceDetails:
      type: object
      properties:
        ipAddress:
          type: string
        deviceType:
          type: string
        deviceName:
          type: string
        deviceOS:
          type: string
        browser:
          type: string
    Item:
      type: object
      properties:
        name:
          type: string
        price:
          type: string
        quantity:
          type: integer
    UrlDetails:
      type: object
      properties:
        successUrl:
          type: string
        failureUrl:
          type: string
        pendingUrl:
          type: string
        notificationUrl:
          type: string
    PaymentResponse:
      type: object
      properties:
        sessionToken:
          type: string
        orderId:
          type: string
        userTokenId:
          type: string
        paymentOption:
          type: object
        transactionStatus:
          type: string
          enum: [APPROVED, DECLINED, ERROR, REDIRECT, PENDING]
        gwErrorCode:
          type: integer
        gwErrorReason:
          type: string
        gwExtendedErrorCode:
          type: integer
        transactionType:
          type: string
        transactionId:
          type: string
        externalTransactionId:
          type: string
        authCode:
          type: string
        status:
          type: string
          enum: [SUCCESS, ERROR]
        reason:
          type: string
        errCode:
          type: integer
        merchantId:
          type: string
        merchantSiteId:
          type: string
        version:
          type: string
        clientRequestId:
          type: string
        internalRequestId:
          type: integer
        clientUniqueId:
          type: string
    FinancialOperationRequest:
      allOf:
      - $ref: "#/components/schemas/MerchantAuth"
      - type: object
        required:
        - relatedTransactionId
        - amount
        - currency
        properties:
          clientUniqueId:
            type: string
          amount:
            type: string
          currency:
            type: string
          relatedTransactionId:
            type: string
          authCode:
            type: string
          comment:
            type: string
    FinancialOperationResponse:
      type: object
      properties:
        transactionId:
          type: string
        externalTransactionId:
          type: string
        transactionStatus:
          type: string
          enum: [APPROVED, DECLINED, ERROR]
        status:
          type: string
          enum: [SUCCESS, ERROR]
        authCode:
          type: string
        gwErrorCode:
          type: integer
        gwErrorReason:
          type: string
    StatusRequest:
      allOf:
      - $ref: "#/components/schemas/MerchantAuth"
      - type: object
        required:
        - sessionToken
        properties:
          sessionToken:
            type: string