Nuvei User Payment Options API

Manages stored payment instruments (User Payment Options / UPOs) including card and APM tokenization. Supports addUPOCreditCard, addUPOAPM, editUPOCreditCard, editUPOAPM, deleteUPO, getUserUPOs, and enableUPO/disableUPO.

OpenAPI Specification

nuvei-user-payment-options-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Nuvei User Payment Options API
  description: Manage stored payment instruments (User Payment Options / UPOs) — cards and APMs.
  version: "1.0"
  contact:
    name: Nuvei Developer Support
    url: https://docs.nuvei.com
servers:
- url: https://secure.safecharge.com/ppp/api/v1
  description: Production
- url: https://ppp-test.nuvei.com/ppp/api/v1
  description: Sandbox
tags:
- name: User Payment Options
paths:
  /addUPOCreditCard.do:
    post:
      tags:
      - User Payment Options
      summary: Add Credit Card UPO
      operationId: addUPOCreditCard
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AddUPOCardRequest"
      responses:
        "200":
          description: UPO created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UPOResponse"
  /addUPOAPM.do:
    post:
      tags:
      - User Payment Options
      summary: Add APM UPO
      operationId: addUPOAPM
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AddUPOAPMRequest"
      responses:
        "200":
          description: UPO created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UPOResponse"
  /editUPOCreditCard.do:
    post:
      tags:
      - User Payment Options
      summary: Edit Credit Card UPO
      operationId: editUPOCreditCard
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EditUPORequest"
      responses:
        "200":
          description: UPO updated
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UPOResponse"
  /editUPOAPM.do:
    post:
      tags:
      - User Payment Options
      summary: Edit APM UPO
      operationId: editUPOAPM
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EditUPORequest"
      responses:
        "200":
          description: UPO updated
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UPOResponse"
  /deleteUPO.do:
    post:
      tags:
      - User Payment Options
      summary: Delete UPO
      operationId: deleteUPO
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/DeleteUPORequest"
      responses:
        "200":
          description: UPO deleted
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UPOResponse"
  /getUserUPOs.do:
    post:
      tags:
      - User Payment Options
      summary: Get User UPOs
      operationId: getUserUPOs
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/GetUserUPOsRequest"
      responses:
        "200":
          description: List of UPOs
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetUserUPOsResponse"
  /enableUPO.do:
    post:
      tags:
      - User Payment Options
      summary: Enable UPO
      operationId: enableUPO
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ToggleUPORequest"
      responses:
        "200":
          description: UPO enabled
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UPOResponse"
  /disableUPO.do:
    post:
      tags:
      - User Payment Options
      summary: Disable UPO
      operationId: disableUPO
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ToggleUPORequest"
      responses:
        "200":
          description: UPO disabled
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UPOResponse"
components:
  schemas:
    MerchantAuth:
      type: object
      required:
      - merchantId
      - merchantSiteId
      - userTokenId
      - timeStamp
      - checksum
      properties:
        merchantId:
          type: string
        merchantSiteId:
          type: string
        userTokenId:
          type: string
        clientRequestId:
          type: string
        timeStamp:
          type: string
        checksum:
          type: string
    AddUPOCardRequest:
      allOf:
      - $ref: "#/components/schemas/MerchantAuth"
      - type: object
        properties:
          ccCardNumber:
            type: string
          ccExpMonth:
            type: string
          ccExpYear:
            type: string
          ccNameOnCard:
            type: string
          billingAddress:
            type: object
    AddUPOAPMRequest:
      allOf:
      - $ref: "#/components/schemas/MerchantAuth"
      - type: object
        properties:
          paymentMethodName:
            type: string
          apmData:
            type: object
            additionalProperties: true
          billingAddress:
            type: object
    EditUPORequest:
      allOf:
      - $ref: "#/components/schemas/MerchantAuth"
      - type: object
        properties:
          userPaymentOptionId:
            type: string
          ccExpMonth:
            type: string
          ccExpYear:
            type: string
          ccNameOnCard:
            type: string
          billingAddress:
            type: object
    DeleteUPORequest:
      allOf:
      - $ref: "#/components/schemas/MerchantAuth"
      - type: object
        properties:
          userPaymentOptionId:
            type: string
    GetUserUPOsRequest:
      allOf:
      - $ref: "#/components/schemas/MerchantAuth"
    ToggleUPORequest:
      allOf:
      - $ref: "#/components/schemas/MerchantAuth"
      - type: object
        properties:
          userPaymentOptionId:
            type: string
    UPOResponse:
      type: object
      properties:
        userPaymentOptionId:
          type: string
        status:
          type: string
          enum: [SUCCESS, ERROR]
        errCode:
          type: integer
        reason:
          type: string
        merchantId:
          type: string
        merchantSiteId:
          type: string
        version:
          type: string
        clientRequestId:
          type: string
        internalRequestId:
          type: integer
    GetUserUPOsResponse:
      type: object
      properties:
        paymentMethods:
          type: array
          items:
            type: object
            properties:
              userPaymentOptionId:
                type: string
              upoName:
                type: string
              upoStatus:
                type: string
              upoRegistrationDate:
                type: string
              ccCardNumber:
                type: string
              ccExpMonth:
                type: string
              ccExpYear:
                type: string
              brand:
                type: string
              uniqueCC:
                type: string
              bin:
                type: string
              last4Digits:
                type: string
        status:
          type: string
          enum: [SUCCESS, ERROR]