Visa Acceptance Invoices API

Create and manage invoices for payment collection

OpenAPI Specification

visa-acceptance-invoices-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Visa Acceptance Payments Captures Invoices API
  description: The Visa Acceptance Payments API (powered by CyberSource) provides REST endpoints for accepting payments online, in-person, and via mobile. The API supports authorization, capture, refund, void, and reversal operations for credit cards, debit cards, digital wallets (Apple Pay, Google Pay), and other payment methods. Authentication uses JSON Web Token (JWT) with RSA key pairs.
  version: '2.0'
  contact:
    name: Visa Acceptance Developer Portal
    url: https://developer.visaacceptance.com/
  license:
    name: Commercial
    url: https://developer.visaacceptance.com/
servers:
- url: https://api.visaacceptance.com
  description: Production environment
- url: https://apitest.visaacceptance.com
  description: Sandbox/test environment
security:
- JWT: []
tags:
- name: Invoices
  description: Create and manage invoices for payment collection
paths:
  /pts/v2/invoices:
    post:
      operationId: createInvoice
      summary: Create Invoice
      description: Create an invoice for payment collection. Invoices can be sent to customers via email and include a payment link. Supports line items, tax, and custom due dates.
      tags:
      - Invoices
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InvoiceRequest'
      responses:
        '201':
          description: Invoice created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvoiceResponse'
        '400':
          description: Invalid invoice request
    get:
      operationId: listInvoices
      summary: List Invoices
      description: Retrieve a list of invoices with optional filtering by status and date range.
      tags:
      - Invoices
      parameters:
      - name: status
        in: query
        required: false
        description: Filter by invoice status
        schema:
          type: string
          enum:
          - CREATED
          - SENT
          - PAID
          - CANCELLED
          - EXPIRED
      - name: limit
        in: query
        required: false
        description: Maximum number of invoices to return
        schema:
          type: integer
          default: 20
          maximum: 100
      responses:
        '200':
          description: List of invoices
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvoiceListResponse'
  /pts/v2/invoices/{invoiceId}:
    get:
      operationId: getInvoice
      summary: Get Invoice
      description: Retrieve details of a specific invoice by its ID.
      tags:
      - Invoices
      parameters:
      - name: invoiceId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Invoice details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvoiceResponse'
        '404':
          description: Invoice not found
    patch:
      operationId: updateInvoice
      summary: Update Invoice
      description: Update a draft invoice before sending it to the customer.
      tags:
      - Invoices
      parameters:
      - name: invoiceId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InvoiceRequest'
      responses:
        '200':
          description: Invoice updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvoiceResponse'
components:
  schemas:
    InvoiceResponse:
      type: object
      properties:
        id:
          type: string
        status:
          type: string
          enum:
          - CREATED
          - SENT
          - PAID
          - CANCELLED
          - EXPIRED
        invoiceUrl:
          type: string
          format: uri
          description: URL where the customer can pay the invoice
        createdDate:
          type: string
          format: date-time
        dueDate:
          type: string
          format: date
    LineItem:
      type: object
      properties:
        productName:
          type: string
        quantity:
          type: integer
        unitPrice:
          type: string
        totalAmount:
          type: string
    InvoiceRequest:
      type: object
      required:
      - customerInformation
      - orderInformation
      properties:
        customerInformation:
          type: object
          properties:
            name:
              type: string
            email:
              type: string
              format: email
        orderInformation:
          type: object
          properties:
            amountDetails:
              type: object
              properties:
                totalAmount:
                  type: string
                currency:
                  type: string
            lineItems:
              type: array
              items:
                $ref: '#/components/schemas/LineItem'
        dueDate:
          type: string
          format: date
          description: Due date for the invoice payment
    InvoiceListResponse:
      type: object
      properties:
        invoices:
          type: array
          items:
            $ref: '#/components/schemas/InvoiceResponse'
        totalCount:
          type: integer
  securitySchemes:
    JWT:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: RSA-signed JSON Web Token. Generate using your merchant ID and RSA key pair from the Visa Acceptance Business Center.
externalDocs:
  description: Visa Acceptance Developer Documentation
  url: https://developer.visaacceptance.com/docs.html