Finix Disputes API

{'$ref': 'api-descriptions/tags/disputes.md'}

OpenAPI Specification

finix-disputes-api-openapi.yml Raw ↑
openapi: 3.0.2
info:
  title: Finix Authorizations Disputes API
  description:
    $ref: api-descriptions/main.md
  contact:
    name: Finix
    url: https://finix.com
    email: support@finixpayments.com
  version: '2022-02-01'
servers:
- description: Sandbox server to be used for testing and development
  url: https://finix.sandbox-payments-api.com
security:
- BasicAuth: []
tags:
- name: Disputes
  description:
    $ref: api-descriptions/tags/disputes.md
paths:
  /disputes:
    get:
      tags:
      - Disputes
      description: Retrieve a list of `Disputes`.
      summary: List Disputes
      operationId: listDisputes
      parameters:
      - $ref: '#/components/parameters/QueryLimit'
      - $ref: '#/components/parameters/QueryCreatedAtGteFilter'
      - $ref: '#/components/parameters/QueryCreatedAtLteFilter'
      - $ref: '#/components/parameters/QueryUpdatedAtGteFilter'
      - $ref: '#/components/parameters/QueryUpdatedAtLteFilter'
      - schema:
          type: string
        in: query
        name: transfer_id
        description: 'Filter by the ID of the `Transfer` that''s being disputed. <br><br>**Note**: If included, all other filter parameters are ignored.'
      - schema:
          type: string
        in: query
        name: adjustment_transfer_id
        description: 'Filter by the ID of the adjustment `Transfer`. <br><br>**Note**: If included, all other filter parameters are ignored.'
      - $ref: '#/components/parameters/QueryAmountFilter'
      - $ref: '#/components/parameters/QueryAmountGteFilter'
      - $ref: '#/components/parameters/QueryAmountGtFilter'
      - $ref: '#/components/parameters/QueryAmountLtFilter'
      - schema:
          type: string
        in: query
        name: state
        description: Filter by the state of the `Dispute`.
      - schema:
          type: string
        in: query
        name: response_state
        description: Filter by the `response_state` of the `Dispute`.
      - schema:
          type: string
        in: query
        name: respond_by.lte
        description: Filter where `respond_by` is before the given date.
      - schema:
          type: string
        in: query
        name: respond_by.gte
        description: Filter where `respond_by` is after the given date.
      - schema:
          type: string
        in: query
        name: instrument_bin
        description: Filter by the Bank Identification Number (BIN). The BIN is the first 6 digits of the masked account number.
      - schema:
          type: string
        in: query
        name: instrument_brand_type
        description: Filter by the card brand used.
      - in: query
        name: merchant_identity_id
        description: Filter by the ID of the `Identity` used by the `Merchant`.
        schema:
          type: string
      - schema:
          type: string
        in: query
        name: merchant_identity_name
        description: Filter by the name used by the `Merchant`.
      - schema:
          type: string
        in: query
        name: instrument_name
        description: Filter by the name of the `Payment Instrument`.
      - schema:
          type: string
        in: query
        name: instrument_type
        description: Filter by `Payment Instrument` type.
      - schema:
          type: string
        in: query
        name: merchant_id
        description: Filter by the ID of the `Merchant`.
      - schema:
          type: string
        in: query
        name: merchant_mid
        description: Filter by the MID of the `Merchant`.
      - schema:
          type: string
        in: query
        name: instrument_card_last4
        description: Filter by the last 4 digits of the card used.
      - schema:
          type: string
        in: query
        name: instrument_card_type
        description: Filter by the card type.
      - schema:
          type: string
        in: query
        name: instrument_fingerprint
        description: Filter by the fingerprint of the `Payment Instrument`.
      - schema:
          type: string
        in: query
        name: before_cursor
        description: Returns every `Dispute` created before the cursor value.
      - $ref: '#/components/parameters/TagsKey'
      - $ref: '#/components/parameters/TagsValue'
      responses:
        '200':
          $ref: '#/components/responses/DisputesList'
        '401':
          $ref: '#/components/responses/ErrorUnauthorized'
        '403':
          $ref: '#/components/responses/ErrorForbidden403'
        '406':
          $ref: '#/components/responses/Error406NotAcceptable'
      x-java-method-name: list
      x-group-parameters: true
      x-codeSamples:
      - lang: cURL
        label: curl
        source: "curl \"https://finix.sandbox-payments-api.com/disputes/\" \\\n  -H \"Finix-Version: 2022-02-01\" \\\n  -u USsRhsHYZGBPnQw8CByJyEQW:8a14c2f9-d94b-4c72-8f5c-a62908e5b30e\n"
      x-python-method-name: list
      x-returns-list: true
  /disputes/{dispute_id}:
    parameters:
    - description: ID of `Dispute`.
      required: true
      in: path
      name: dispute_id
      schema:
        type: string
    get:
      tags:
      - Disputes
      description: Retrieve the details of a previously created `Dispute`.
      summary: Fetch a Dispute
      operationId: getDispute
      responses:
        '200':
          $ref: '#/components/responses/Dispute'
        '401':
          $ref: '#/components/responses/ErrorUnauthorized'
        '403':
          $ref: '#/components/responses/ErrorForbidden403'
        '404':
          $ref: '#/components/responses/ErrorNotFound'
        '406':
          $ref: '#/components/responses/Error406NotAcceptable'
      x-java-method-name: get
      x-codeSamples:
      - lang: cURL
        label: curl
        source: "curl \"https://finix.sandbox-payments-api.com/disputes/DIs7yQRkHDdMYhurzYz72SFk\" \\\n  -H \"Finix-Version: 2022-02-01\" \\\n  -u USsRhsHYZGBPnQw8CByJyEQW:8a14c2f9-d94b-4c72-8f5c-a62908e5b30e\n"
      x-python-method-name: get
    put:
      summary: Update a Dispute
      operationId: updateDispute
      responses:
        '200':
          $ref: '#/components/responses/Dispute'
        '401':
          $ref: '#/components/responses/ErrorUnauthorized'
        '403':
          $ref: '#/components/responses/ErrorForbidden403'
        '404':
          $ref: '#/components/responses/ErrorNotFound'
        '406':
          $ref: '#/components/responses/Error406NotAcceptable'
      description: Update `tags` on `Disputes`.
      requestBody:
        $ref: '#/components/requestBodies/UpdateDisputeEvidence'
      x-java-method: put
      tags:
      - Disputes
      parameters:
      - schema:
          type: string
          default: '2018-01-01'
          example: '2022-02-01'
        in: header
        name: Finix-Version
        description: Specify the API version of your request. For more details, see [Versioning.](/guides/developers/versioning/)
      x-python-method-name: update_dispute
  /disputes/{dispute_id}/evidence:
    parameters:
    - description: ID of `Dispute` to mange evidence for.
      required: true
      in: path
      name: dispute_id
      schema:
        type: string
    post:
      tags:
      - Disputes
      description: 'Upload a file as evidence for a `Dispute`.


        - You can upload up to 8 files; the total size of the uploaded files combined cannot exceed 10 MB.

        - The allowed file formats include JPG, PNG, PDF, or TIFF.

        - Individual PNG and JPEG files can''t exceed 50 KB; PDF and TIFF files can''t exceed 1 MB.'
      summary: Upload Files as Dispute Evidence
      operationId: createDisputeEvidence
      responses:
        '201':
          $ref: '#/components/responses/DisputeEvidence'
        '401':
          $ref: '#/components/responses/ErrorUnauthorized'
        '403':
          $ref: '#/components/responses/ErrorForbidden403'
        '404':
          $ref: '#/components/responses/ErrorNotFound'
        '406':
          $ref: '#/components/responses/Error406NotAcceptable'
      x-codeSamples:
      - lang: cURL
        label: curl
        source:
          $ref: xcode/curl/disputes/uploadevidence.md
      requestBody:
        $ref: '#/components/requestBodies/CreateDisputeEvidenceRequest'
      x-python-method-name: create_dispute_evidence
    get:
      tags:
      - Disputes
      description: Retrieve a list of dispute evidence for a `Dispute`.
      summary: List Dispute Evidence
      operationId: listDisputeEvidence
      responses:
        '200':
          $ref: '#/components/responses/DisputeEvidenceList'
        '401':
          $ref: '#/components/responses/ErrorUnauthorized'
        '403':
          $ref: '#/components/responses/ErrorForbidden403'
        '404':
          $ref: '#/components/responses/ErrorNotFound'
        '406':
          $ref: '#/components/responses/Error406NotAcceptable'
      x-java-method-name: listDisputeEvidenceByDisputeId
      x-group-parameters: true
      parameters:
      - $ref: '#/components/parameters/QueryLimit'
      - $ref: '#/components/parameters/QueryAfterCursor'
      - $ref: '#/components/parameters/QueryBeforeCursor'
      x-codeSamples:
      - lang: cURL
        label: curl
        source: "curl \"https://finix.sandbox-payments-api.com/disputes/DIs7yQRkHDdMYhurzYz72SFk/evidence\" \\\n  -H \"Finix-Version: 2022-02-01\" \\\n  -u USsRhsHYZGBPnQw8CByJyEQW:8a14c2f9-d94b-4c72-8f5c-a62908e5b30e\n"
      x-python-method-name: list_dispute_evidence_by_dispute_id
      x-returns-list: true
  /disputes/{dispute_id}/evidence/{evidence_id}:
    parameters:
    - description: ID of `Dispute` to fetch evidence for.
      required: true
      in: path
      name: dispute_id
      schema:
        type: string
    - description: ID of `evidence` to fetch.
      required: true
      in: path
      name: evidence_id
      schema:
        type: string
    get:
      tags:
      - Disputes
      description: "Fetch evidence uploaded for a `Dispute`. \n\nIf you don't have the Finix Dashboard available, you can fetch the evidence to review the `status` of the upload to confirm the evidence got sent to the processor."
      summary: Fetch Dispute Evidence
      operationId: getDisputeEvidence
      responses:
        '200':
          $ref: '#/components/responses/DisputeEvidence'
        '401':
          $ref: '#/components/responses/ErrorUnauthorized'
        '403':
          $ref: '#/components/responses/ErrorForbidden403'
        '404':
          $ref: '#/components/responses/ErrorNotFound'
        '406':
          $ref: '#/components/responses/Error406NotAcceptable'
      x-codeSamples:
      - lang: cURL
        label: curl
        source: "curl \"https://finix.sandbox-payments-api.com/disputes/DIs7yQRkHDdMYhurzYz72SFk/evidence/DF58kdVTa5eMQUjcXH2F7DH4\" \\\n  -H \"Finix-Version: 2022-02-01\" \\\n  -u USsRhsHYZGBPnQw8CByJyEQW:8a14c2f9-d94b-4c72-8f5c-a62908e5b30e\n"
      x-python-method-name: get_dispute_evidence
    put:
      summary: Update Dispute Evidence
      operationId: updateDisputeEvidence
      responses:
        '200':
          $ref: '#/components/responses/DisputeEvidence'
        '401':
          $ref: '#/components/responses/ErrorUnauthorized'
        '403':
          $ref: '#/components/responses/ErrorForbidden403'
        '404':
          $ref: '#/components/responses/ErrorNotFound'
        '406':
          $ref: '#/components/responses/Error406NotAcceptable'
      description: Update tags on `Dispute` evidence.
      requestBody:
        $ref: '#/components/requestBodies/UpdateDisputeEvidence'
      x-java-method: put
      tags:
      - Disputes
      parameters:
      - schema:
          type: string
          default: '2018-01-01'
          example: '2022-02-01'
        in: header
        name: Finix-Version
        description: Specify the API version of your request. For more details, see [Versioning.](/guides/developers/versioning/)
      x-python-method-name: update_dispute_evidence
  /disputes/{dispute_id}/adjustment_transfers:
    parameters:
    - schema:
        type: string
      name: dispute_id
      in: path
      required: true
      description: ID of the `Dispute` resource.
    get:
      summary: Fetch Dispute Adjustment Transfers
      tags:
      - Disputes
      responses:
        '200':
          $ref: '#/components/responses/AdjustmentTransfersList'
        '401':
          description: Unauthorized
        '403':
          $ref: '#/components/responses/ErrorForbidden403'
        '404':
          $ref: '#/components/responses/ErrorNotFound'
        '406':
          $ref: '#/components/responses/Error406NotAcceptable'
      operationId: listDisputesAdjustments
      description: 'List the adjustment `Transfers` for a `Dispute`. Depending on the stage of the `Dispute`, different adjustment `Transfer` subtypes can be applied.


        There are four available subtypes for adjustment `Transfers` in `Disputes`: <ul><li><strong>PLATFORM\_CREDIT</strong><li><strong>MERCHANT\_DEBIT</strong><li><strong>MERCHANT\_CREDIT</strong><li><strong>PLATFORM\_DEBIT</strong></ul>'
      x-group-parameters: true
      parameters:
      - $ref: '#/components/parameters/QueryLimit'
      - $ref: '#/components/parameters/QueryAfterCursor'
      - $ref: '#/components/parameters/QueryBeforeCursor'
      x-codeSamples:
      - lang: cURL
        label: curl
        source: "curl \"https://finix.sandbox-payments-api.com/disputes/DIs7yQRkHDdMYhurzYz72SFk/adjustment_transfers\" \\\n  -H \"Finix-Version: 2022-02-01\" \\\n  -u USsRhsHYZGBPnQw8CByJyEQW:8a14c2f9-d94b-4c72-8f5c-a62908e5b30e\n"
      x-python-method-name: list_disputes_adjustments
      x-returns-list: true
  /disputes/{dispute_id}/submit:
    parameters:
    - schema:
        type: string
      name: dispute_id
      in: path
      required: true
      description: ID of `Dispute` to move forward and submit evidence.
    post:
      summary: Submit Dispute Evidence
      operationId: submitDisputeEvidence
      responses:
        '200':
          $ref: '#/components/responses/Dispute'
        '401':
          $ref: '#/components/responses/ErrorUnauthorized'
        '403':
          $ref: '#/components/responses/ErrorForbidden403'
        '404':
          $ref: '#/components/responses/ErrorNotFound'
        '406':
          $ref: '#/components/responses/Error406NotAcceptable'
        '422':
          $ref: '#/components/responses/ErrorUnprocessableEntity'
      tags:
      - Disputes
      description: 'You can manually submit evidence to the issuing bank to manually move a dispute forward. Use the `/disputes/DISPUTE_ID/submit` endpoint to submit evidence. Making a POST request lets the issuing bank know the seller has completed submitting evidence and is prepared to move forward with the dispute.


        Related guides: [Responding to Disputes](/guides/after-the-payment/disputes/responding-disputes/).'
      x-java-method-name: post
      x-codeSamples:
      - lang: cURL
        label: curl
        source:
          $ref: xcode/curl/disputes/submit-dispute-evidence.md
      requestBody:
        $ref: '#/components/requestBodies/SubmitDisputeEvidence'
      parameters:
      - schema:
          type: string
          default: '2018-01-01'
          example: '2022-02-01'
        in: header
        name: Finix-Version
        description: Specify the API version of your request. For more details, see [Versioning.](/guides/developers/versioning/)
      x-python-method-name: post
  /disputes/{dispute_id}/accept:
    parameters:
    - schema:
        type: string
      name: dispute_id
      in: path
      required: true
      description: ID of `Dispute` to move forward and submit evidence.
    post:
      summary: Accept a Dispute
      operationId: acceptDispute
      responses:
        '200':
          $ref: '#/components/responses/Dispute'
        '401':
          $ref: '#/components/responses/ErrorUnauthorized'
        '403':
          $ref: '#/components/responses/ErrorForbidden403'
        '404':
          $ref: '#/components/responses/ErrorNotFound'
        '406':
          $ref: '#/components/responses/Error406NotAcceptable'
        '422':
          $ref: '#/components/responses/ErrorUnprocessableEntity'
      description: 'You can accept a `Dispute` to prevent a long (and potentially expensive) process. When you accept a `Dispute`, you concede that the Dispute is not worth challenging or representing.


        Related guides: [Accepting a Dispute](/guides/after-the-payment/disputes/accepting-disputes/)

        '
      x-java-method-name: post
      x-codeSamples:
      - lang: cURL
        label: curl
        source:
          $ref: xcode/curl/disputes/accept-dispute.md
      requestBody:
        $ref: '#/components/requestBodies/AcceptDisputeRequest'
      tags:
      - Disputes
      x-python-method-name: post
  /disputes/{dispute_id}/evidence/{evidence_id}/download:
    parameters:
    - schema:
        type: string
        example: DIpCy4sZTx6im6U1ofBBPzdM
      name: dispute_id
      in: path
      required: true
      description: ID of `Dispute` to download evidence from.
    - schema:
        type: string
        example: DFtiQ1LoNbjBTYiuuxju6tE2
      name: evidence_id
      in: path
      required: true
      description: ID of `evidence` to download.
    get:
      summary: Download Dispute Evidence
      tags:
      - Disputes
      responses:
        '200':
          $ref: '#/components/responses/FileDownload'
        '401':
          $ref: '#/components/responses/ErrorUnauthorized'
        '403':
          $ref: '#/components/responses/ErrorForbidden403'
        '404':
          $ref: '#/components/responses/ErrorNotFound'
        '406':
          $ref: '#/components/responses/Error406NotAcceptable'
      operationId: downloadDisputeEvidence
      description: 'Download a file uploaded as `Dispute Evidence`.


        **Note**: The file extension included in `output` must match the extension of the original uploaded file.'
      x-java-method-name: get
      x-codeSamples:
      - lang: cURL
        label: curl
        source: "curl \"https://finix.sandbox-payments-api.com/disputes/DIpCy4sZTx6im6U1ofBBPzdM/evidence/DFtiQ1LoNbjBTYiuuxju6tE2/download\" \\\n  -H \"Finix-Version: 2022-02-01\" \\\n  -u USsRhsHYZGBPnQw8CByJyEQW:8a14c2f9-d94b-4c72-8f5c-a62908e5b30e \\\n  --output DFtiQ1LoNbjBTYiuuxju6tE2.png\n"
      parameters: []
      x-python-method-name: get
components:
  schemas:
    IdempotencyId:
      title: IdempotencyId
      type: string
      description: Pass any randomly generated or internal ID to [idempotently](/api/overview/#section/Idempotency-Requests) identify `Transfers`, `Authorizations`, and refund requests.
      nullable: true
    Amount:
      type: integer
      title: Amount
      description: The total amount that will be debited in cents (e.g. 100 cents to debit $1.00).
      format: int64
    ErrorGeneric:
      type: object
      properties:
        total:
          type: integer
        _embedded:
          type: object
          properties:
            errors:
              type: array
              items:
                type: object
                additionalProperties: true
                properties:
                  code:
                    type: string
                    enum:
                    - FORBIDDEN
                  logref:
                    $ref: '#/components/schemas/LogRef'
                  message:
                    type: string
                  _links:
                    type: object
                    properties:
                      source:
                        type: object
                        properties:
                          href:
                            type: string
    Messages:
      title: Messages
      type: array
      description: Message field that provides additional details. This field is typically **null**.
      nullable: true
      items:
        type: string
    FailureMessage:
      title: FailureMessage
      x-stoplight:
        id: cgilf858039yi
      type: string
      description: A human-readable description of why the transaction was declined. This will also include a suggestion on how to complete the payment.
      nullable: true
    Error403ForbiddenList:
      type: object
      properties:
        total:
          type: integer
        _embedded:
          type: object
          properties:
            errors:
              type: array
              items:
                type: object
                additionalProperties: true
                properties:
                  code:
                    type: string
                    enum:
                    - FORBIDDEN
                  logref:
                    $ref: '#/components/schemas/LogRef'
                  message:
                    type: string
                  _links:
                    type: object
                    properties:
                      source:
                        type: object
                        properties:
                          href:
                            type: string
      description: ''
      title: ''
    Raw:
      title: Raw
      description: Raw response from the processor.
      x-examples: {}
      type: object
      nullable: true
    AcceptDispute:
      title: AcceptDispute
      type: object
      x-stoplight:
        id: 47d1ecd88c757
      properties:
        note:
          type: string
          description: 'Include a note or custom metadata to reference the `Dispute`. '
          example: '"Accepting Dispute: Mistaken Charge"'
      required:
      - note
    UpdatedAt:
      type: string
      title: UpdatedAt
      format: date-time
      description: Timestamp of when the object was last updated.
    PageCursor:
      title: PageCursor
      x-stoplight:
        id: 8v9on8n2939z2
      type: object
      properties:
        limit:
          type: integer
          description: The number of entries to return.
        next_cursor:
          type: string
          description: The cursor to use for the next page of results.
          nullable: true
      description: Details the page that's returned.
    FeeType:
      title: FeeType
      type: string
      enum:
      - APPLICATION_FEE
      - ACH_BASIS_POINTS
      - ACH_FIXED
      - CARD_BASIS_POINTS
      - CARD_FIXED
      - CARD_INTERCHANGE
      - VISA_BASIS_POINTS
      - VISA_FIXED
      - VISA_INTERCHANGE
      - VISA_ASSESSMENT_BASIS_POINTS
      - VISA_ACQUIRER_PROCESSING_FIXED
      - VISA_CREDIT_VOUCHER_FIXED
      - VISA_BASE_II_SYSTEM_FILE_TRANSMISSION_FIXED
      - VISA_BASE_II_CREDIT_VOUCHER_FIXED
      - VISA_KILOBYTE_ACCESS_FIXED
      - DISCOVER_BASIS_POINTS
      - DISCOVER_FIXED
      - DISCOVER_INTERCHANGE
      - DISCOVER_ASSESSMENT_BASIS_POINTS
      - DISCOVER_DATA_USAGE_FIXED
      - DISCOVER_NETWORK_AUTHORIZATION_FIXED
      - DINERS_CLUB_BASIS_POINTS
      - DINERS_CLUB_FIXED
      - DINERS_CLUB_INTERCHANGE
      - MASTERCARD_BASIS_POINTS
      - MASTERCARD_FIXED
      - MASTERCARD_INTERCHANGE
      - MASTERCARD_ASSESSMENT_UNDER_1K_BASIS_POINTS
      - MASTERCARD_ASSESSMENT_OVER_1K_BASIS_POINTS
      - MASTERCARD_ACQUIRER_FEE_BASIS_POINTS
      - JCB_BASIS_POINTS
      - JCB_FIXED
      - JCB_INTERCHANGE
      - AMERICAN_EXPRESS_BASIS_POINTS
      - AMERICAN_EXPRESS_FIXED
      - AMERICAN_EXPRESS_INTERCHANGE
      - AMERICAN_EXPRESS_ASSESSMENT_BASIS_POINTS
      - DISPUTE_INQUIRY_FIXED_FEE
      - DISPUTE_FIXED_FEE
      - QUALIFIED_TIER_BASIS_POINTS_FEE
      - QUALIFIED_TIER_FIXED_FEE
      - CUSTOM
      - ACH_DEBIT_RETURN_FIXED_FEE
      - ACH_CREDIT_RETURN_FIXED_FEE
      - ANCILLARY_FIXED_FEE_PRIMARY
      - ANCILLARY_FIXED_FEE_SECONDARY
      - SETTLEMENT_V2_TRANSFER
      description: Details the type of fee if the `Transfer` includes a `fee`.
    CardPresentDetails:
      title: CardPresentDetails
      x-stoplight:
        id: jbenxkas8ukf2
      type: object
      description: Details needed to process card present transactions.
      nullable: true
      properties:
        approval_code:
          type: string
          description: Unique ID used to identify the approval of the `Transfer`.
          nullable: true
        brand:
          type: string
          description: The brand of the card saved in the `Payment Instrument`.
          nullable: true
        emv_data:
          type: object
          description: Encrypted card data used to process the transaction.
          nullable: true
          properties:
            application_identifier:
              type: string
              description: ID of the EMV application processing the transaction.
            application_label:
              type: string
              description: EMV card label.
            application_preferred_name:
              type: string
              description: Alternate EMV application name (if provided).
              nullable: true
            application_transaction_counter:
              type: string
              description: Transaction number for the EMV application.
            cryptogram:
              type: string
              description: Encrypted card infromation used to process the transaction.
            issuer_code_table_index:
              type: string
              description: The alphabet code table (according to ISO 8859) used by the EMV application (if provided).
              nullable: true
            pin_verified:
              type: boolean
              description: Details if the cardholder's PIN number was verified.
            tags:
              $ref: '#/components/schemas/Tags'
        entry_mode:
          type: string
          description: Details how the card was entered to process the transaction.
          nullable: true
        masked_account_number:
          type: string
          description: Last four digits of the bank account number.
          nullable: true
        name:
          type: string
          description: The name of the bank account or card owner.
          nullable: true
        payment_type:
          type: string
          description: The type of `Payment Instrument` used in the transaction (or the original payment).
    FileDownload:
      type: string
      title: FileDownload
      x-stoplight:
        id: fylqbqcpw7nuv
      format: binary
      description: The file in question will begin to download.
    AdditionalPurchaseData:
      title: AdditionalPurchaseData
      x-stoplight:
        id: e98e7635f242c
      type: object
      description: Additional information about the purchase. Used for [Level 2 and Level 3 Processing](/guides/payments/modify/level-2-and-level-3-processing/).
      properties:
        customer_reference_number:
          type: string
          description: The customer reference for the purchase (max 17 characters).
          maxLength: 17
        customs_duty_amount:
          type: integer
          description: The duty in cents on the total purchase amount for the order
        destination_country_code:
          type: string
          description: The ISO country code of the order destination.
        destination_postal_code:
          type: string
          description: The postal code of the order destination (10 characters)
          maxLength: 10
        discount_amount:
          type: integer
          description: The amount in cents of the discount for the order.
        invoice_reference_number:
          type: string
          description: The order's invoice number (max 15 characters)
          maxLength: 15
        item_data:
          type: array
          description: Additional information about the transaction. Used for Level 2 and Level 3 Processing.
          items:
            type: object
            properties:
              amount_excluding_sales_tax:
                type: integer
                description: '- Total cost of the line item in cents, excluding tax.

                  - Must align with `sales_tax` so `amount_excluding_sales_tax` + `sales_tax` = `amount_including_sales_tax`.'
              amount_including_sales_tax:
                type: integer
                description: '- Total cost of the line item in cents, including tax.

                  - Must align with `sales_tax` so `amount_excluding_sales_tax` + `sales_tax` = `amount_including_sales_tax`.'
              commodity_code:
                type: string
                description: A commodity code is a numeric code representing a particular product or service as defined by the National Institute of Governmental Purchasing. The code can be 3, 5, 7, or 11 digits in length. The longer the code the more granular the description of the product/service. (max 12 characters).
                maxLength: 12
              cost_per_unit:
                type: integer
                description: The price in cents of one unit of the item purchased
              item_description:
                type: string
                description: Required when `item_data` is supplied (max 25 characters)
                maxLength: 25
              item_discount_amount:
                type: integer
                description: 'Item discount amount in cents

                  '
              merchant_product_code:
                type: string
                description: Merchant defined product code (max 12 characters).
                maxLength: 12
              quantity:
                type: integer
                description: The number of items purchased. Must be greater than 0.
                minimum: 1
                maximum: 99
              unit_of_measure:
                type: string
                description: The unit of measure of the purchased item (max 3 characters).
                maxLength: 3
        order_date:
          type: object
          properties:
            day:
              type: integer
              description: Day of purchase (between 1 and 31)
            month:
              type: integer
              description: Month of purchase (between 1 and 12)
            year:
              type: integer
              description: Year of purchase (4-digit)
              minimum: 1990
        sales_tax:
          type: integer
          description: "- Total aggregate tax amount in cents for the entire purchase. Field is automatically calculated if you pass in the itemized tax amounts. \n- For non-taxable transactions either set `sales_tax` to 0 or omit from payload and also set `tax_exempt` to **True**.\n- Request must align so `amount_excluding_sales_tax` + `sales_tax` = `amount_including_sales_tax`."
        ship_from_postal_code:
          type: string
          description: The postal code from where order is shipped (10 characters)
          maxLength: 10
        shipping_amount:
          type: integer
          description: 'The shipping cost in cents for the order.

            '
        tax_exempt:
          type: boolean
          description: '- For tax exempt purchases set to **True**.

            - If set to **True**, request can''t include `sales_tax`.'
      required:
      - customer_reference_number
      - sales_tax
    Dispute:
      type: object
      title: Dispute
      description: A `Dispute` objected created for a chargeback or customer disputes.
      properties:
        id:
          type: string
          example: DIxxxxxxxxxxxxxxxxxx
          description: The ID of the `Dispute` resource.
        created_at:
          $ref: '#/components/schemas/CreatedAt'
        updated_at:
          $ref: '#/components/schemas/UpdatedAt'
        action:
          type: string
          description: The next `action` required to move forward with the `Dispute`.
          nullable: true
        amount:
          type: integer
          description: The total amount of the `Dispute` (in cents).
          nullable: true
        application:
          type: string
          description: The ID of the `Application` resource that the `Dispute` was created under.
        dispute_details:
          description: Details about the `Dispute` received by the `Processor`. Any data from the processor can get included.
          type: object
          properties:
            case_id:
              type: string
              description: The case number the `Processor` has given the dispute in their internal database.
              nullable: true
            pin_debit_adjustment_number:
              type: string
              description: Used by the processor to identify the funds that are getting disputed.
              nullable: true
            reason_code:
              type: string
              description: Used by the processor and card network

# --- truncated at 32 KB (89 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/finix/refs/heads/main/openapi/finix-disputes-api-openapi.yml