> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chargeblast.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Upload Disputes

> Upload disputes with per-dispute validation. Each dispute must reference an existing order via chargeId or include an order object to create it, so every dispute is linked to a charge. Valid disputes are saved even when others in the batch fail. Returns succeeded and failed dispute ids with reasons. Maximum of 100 disputes per request.



## OpenAPI

````yaml post /api/v3/disputes/upload
openapi: 3.0.1
info:
  title: Chargeblast API
  version: 0.1.0
servers:
  - url: https://api.chargeblast.com
security: []
tags:
  - name: Credit Requests
  - name: Sync Data
  - name: Alerts
  - name: Enrollment
paths:
  /api/v3/disputes/upload:
    post:
      tags:
        - Sync Data
      summary: Upload Disputes
      description: >-
        Upload disputes with per-dispute validation. Each dispute must reference
        an existing order via chargeId or include an order object to create it,
        so every dispute is linked to a charge. Valid disputes are saved even
        when others in the batch fail. Returns succeeded and failed dispute ids
        with reasons. Maximum of 100 disputes per request.
      operationId: disputes-upload-v3
      parameters:
        - name: X-API-Key
          required: true
          in: header
          schema:
            type: string
          description: Your API key. Sent in the `X-API-Key` header.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DisputeUploadBody'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DisputeUploadV3Response'
components:
  schemas:
    DisputeUploadBody:
      type: object
      properties:
        disputes:
          type: array
          items:
            $ref: '#/components/schemas/DisputeUploadBodyDispute'
      required:
        - disputes
    DisputeUploadV3Response:
      type: object
      properties:
        message:
          type: string
        succeeded:
          type: array
          items:
            type: string
        failed:
          type: array
          items:
            $ref: '#/components/schemas/DisputeUploadFailure'
      required:
        - message
        - succeeded
        - failed
    DisputeUploadBodyDispute:
      type: object
      properties:
        id:
          type: string
          description: >-
            The internal id of the dispute in your CRM. Re-uploading the same id
            updates the existing dispute.
        disputeDate:
          type: string
          description: >-
            The date the dispute was opened, either in yyyy-MM-dd'T'HH:mm:ssZ
            format or yyyy-MM-dd format.
        chargeId:
          type: string
          description: >-
            The id of an order previously uploaded via /api/v3/orders/upload.
            Provide exactly one of chargeId or order.
        order:
          allOf:
            - $ref: '#/components/schemas/OrderUploadBodyOrder'
          description: >-
            The order to create and link the dispute to, using the same schema
            as /api/v3/orders/upload. Provide exactly one of chargeId or order.
        status:
          type: string
          enum:
            - needs_response
            - under_review
            - charge_refunded
            - won
            - lost
            - protected
            - prevented
          description: The dispute status. Defaults to 'needs_response'.
        reason:
          type: string
          enum:
            - bank_cannot_process
            - check_returned
            - credit_not_processed
            - customer_initiated
            - debit_not_authorized
            - duplicate
            - fraudulent
            - general
            - incorrect_account_details
            - insufficient_funds
            - product_not_received
            - product_unacceptable
            - subscription_canceled
            - unrecognized
            - unknown
          description: The dispute reason. Defaults to 'general'.
        isRDR:
          type: boolean
          description: Whether the dispute was deflected via RDR. Defaults to false.
        submittedEvidence:
          type: boolean
          description: >-
            Whether evidence has already been submitted for this dispute.
            Defaults to false.
      required:
        - id
        - disputeDate
    DisputeUploadFailure:
      type: object
      properties:
        id:
          type: string
        reason:
          type: string
      required:
        - id
        - reason
    OrderUploadBodyOrder:
      required:
        - amount
        - currency
        - id
        - transactionDate
      properties:
        ip:
          type: string
          nullable: true
          description: The ip address of the customer.
        authCode:
          type: string
          nullable: true
          description: The authorization code of the charge. Used for matching purposes.
        amount:
          description: >-
            The amount, in cents, of the order. For example, $19.99 would be
            1999.
          format: int64
          type: integer
        bin:
          nullable: true
          description: First 6 digits of the card.
          type: string
        descriptor:
          nullable: true
          description: The billing descriptor of the charge.
          type: string
        id:
          description: The internal id of the order in your CRM.
          type: string
        currency:
          type: string
          description: The 3 character currency (case insensitive). E.g. 'usd'.
        transactionDate:
          description: >-
            The date of the charge either in yyyy-MM-dd'T'HH:mm:ssZ format or
            yyyy-MM-dd format.
          type: string
        brand:
          description: >-
            The brand of the card (case insensitive). visa, mastercard, amex,
            discover. Other values will default to unknown
          nullable: true
          type: string
        gateway:
          type: string
          nullable: true
          description: >-
            If multiple gateways are used, the gateway of the transaction. Used
            for analytics only.
        arn:
          description: The acquirer reference number of the charge, if available.
          type: string
          nullable: true
        status:
          description: >-
            The status of the transaction. Should be either 'succeeded' or
            'failed'
          nullable: true
          type: string
        last4:
          nullable: true
          description: Last 4 digits of the card.
          type: string
        refunded:
          nullable: true
          description: Whether the transaction has already been refunded.
          type: boolean
        receipt:
          $ref: '#/components/schemas/Receipt'
          description: >-
            Additional info on the transaction. Only required for digital
            receipts and compelling evidence (pre-dispute re-presentment).
          type: object
        network_id:
          type: string
          nullable: true
          description: >-
            The network transaction identifier. Sometimes known as
            network_transaction_identifier. Example values: 'MAHAQMP03'
            (Mastercard), '306054697896273' (Visa).
      type: object
    Receipt:
      type: object
      properties:
        merchantInfo:
          $ref: '#/components/schemas/merchantInfo'
          description: >-
            Override default merchant info. We recommend leaving this blank
            unless you are a merchant of record platform.
          type: object
          nullable: true
        lineItems:
          description: Line items for the receipt.
          type: array
          items:
            $ref: '#/components/schemas/LineItem'
        customerEmail:
          nullable: true
          type: string
        customerPhone:
          type: string
          nullable: true
          description: >-
            Phone number if applicable, e.g. +14016993099. String in any ISO
            format is acceptable.
        shippingAddress:
          $ref: '#/components/schemas/Address'
          description: If a physical product, the shipping address of the customer.
          type: object
        billingAddress:
          $ref: '#/components/schemas/Address'
          description: The billing address of the customer.
          type: object
        name:
          $ref: '#/components/schemas/Name'
          description: The billing address of the customer.
          type: object
    merchantInfo:
      type: object
      properties:
        merchantReceiptContact:
          $ref: '#/components/schemas/MerchantContact'
          nullable: false
          description: >-
            Your business contact information. Mandatory field if you are
            passing in merchant level details for each order.
        name:
          type: string
          nullable: true
          description: >-
            The name of the merchant to appear on the digital receipt, e.g.
            'Netflix'
        description:
          type: string
          nullable: true
          description: A brief description of the business, e.g. 'Media Streaming Business'
        refundPolicyLink:
          type: string
          nullable: true
          description: >-
            A url linking to a refund policy. Include https://, e.g.
            'https://netflix.com/refund-policy'
        cancellationPolicyLink:
          type: string
          nullable: true
          description: >-
            A url linking to a cancel policy. Include https://, e.g.
            'https://netflix.com/cancel-policy'
        termsAndConditionsLink:
          type: string
          nullable: true
          description: >-
            A url linking to a terms of service. Include https://, e.g.
            'https://netflix.com/terms-of-service'
        logoUrl:
          type: string
          nullable: true
          description: >-
            A url linking to a logo of the business. For best results use square
            pngs (ideally 256x256, though other resolutions are supported).
    LineItem:
      properties:
        productName:
          type: string
          nullable: false
          description: The name of the product.
        productDescription:
          type: string
          nullable: true
          description: A more detailed description of the product.
        currency:
          type: string
          nullable: true
          description: 3 character ISO currency code. If nil, defaults to USD.
        quantity:
          format: int64
          type: integer
          nullable: true
          description: The quantity of the line item (defaults to 1).
        price:
          format: int64
          type: integer
          nullable: false
          description: >-
            The total price (in cents) of the line item. For if you bought 5
            socks at $2 each, this field would be 1000.
    Address:
      type: object
      properties:
        line1:
          nullable: true
          type: string
        line2:
          nullable: true
          type: string
        city:
          nullable: true
          type: string
        countrySubdivision:
          type: string
          nullable: true
          description: For US addresses, the state - two letter coded. E.g. CA
        postalCode:
          nullable: true
          type: string
        country:
          type: string
          nullable: true
          description: >-
            The country spelled out, e.g. 'United States of America' or
            abbreviated 'USA'.
        latitude:
          nullable: true
          type: string
        longitude:
          nullable: true
          type: string
    Name:
      type: object
      properties:
        givenName:
          type: string
          nullable: true
          description: 'First name, e.g. ''Elon'' '
        familyName:
          type: string
          nullable: true
          description: 'Last name, e.g. ''Musk'' '
    MerchantContact:
      type: object
      properties:
        phoneForReceipt:
          type: string
          nullable: true
          description: >-
            The phone number to appear on the digital receipt, for the
            merchant's contact.
        emailForReceipt:
          type: string
          nullable: true
          description: >-
            The email address to appear on the digital receipt, for the
            merchant's contact.
        websiteForReceipt:
          type: string
          nullable: true
          description: >-
            The website URL to appear on the digital receipt, for the merchant's
            contact.
        receiptAddress:
          $ref: '#/components/schemas/Address'
          nullable: true
          description: >-
            The address to appear on the digital receipt, for the merchant's
            contact.

````