> This page is for Afterpay.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developers.cash.app/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developers.cash.app/_mcp/server.

### Schema (`response.body`)

```yaml
openapi: 3.1.0
info:
  title: API
  version: 1.0.0
paths:
  /dispute-schema-test:
    get:
      operationId: subpackageSchemas_get-dispute-schema-test
      summary: Get dispute Schema Test
      description: Dispute schema.
      tags:
        - subpackage_schemas
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schemas_GetDisputeSchemaTestResponse'
tags:
  - name: subpackage_schemas
servers:
  - url: https://global-api-sandbox.afterpay.com
    description: Sandbox
  - url: https://global-api.afterpay.com
    description: Production
components:
  schemas:
    DisputeReason:
      type: string
      enum:
        - product_not_received
        - product_unacceptable
        - credit_not_processed
        - order_canceled
        - duplicate
        - incorrect_amount
        - paid_by_other_means
        - fraudulent
        - fraudulent_merchant
      description: The reason for the dispute.
      title: DisputeReason
    DisputeStatus:
      type: string
      enum:
        - needs_response
        - under_review
        - won
        - lost
        - merchant_refunded
        - merchant_voided
      description: >-
        The current state of the dispute. Values depend on how the dispute state
        machine is modeled.
      title: DisputeStatus
    DisputeClosingReason:
      type: string
      enum:
        - merchant_accepted
        - evidence_accepted
        - evidence_rejected
        - deadline_expired
        - customer_cancelled
      description: >-
        A reason indicating how the final decision on the dispute was reached.
        Recommended possible values listed in Closing Reasons.
      title: DisputeClosingReason
    meta:
      type: object
      properties:
        transactionAmount:
          type: string
          description: The transaction amount for the order.
        network:
          type: string
          description: >-
            The payment network used by the customer. (For example, `Visa` or
            `MasterCard`)
        networkReferenceId:
          type: string
          description: The identifier for the payment.
        orderType:
          type: string
          description: The type of order. `ONLINE` or `INSTORE`
      required:
        - transactionAmount
        - orderType
      title: meta
    dispute:
      type: object
      properties:
        id:
          type: string
          description: Dispute identifier
        order:
          type: string
          description: The token of the order that the dispute is for.
        amount:
          type: string
          description: The amount of the dispute
        currency:
          type: string
          description: The ISO 4217 currency code of the dispute.
        reason:
          $ref: '#/components/schemas/DisputeReason'
          description: The reason for the dispute.
        status:
          $ref: '#/components/schemas/DisputeStatus'
          description: >-
            The current state of the dispute. Values depend on how the dispute
            state machine is modeled.
        open:
          type: boolean
          default: true
          description: '`True` if a final decision on the dispute hasn''t been made yet.'
        responseDueBy:
          type: integer
          description: >-
            Deadline by which the merchant must respond to the dispute. (Epoch
            timestamp in seconds, timezone UTC +0.00)
        createdAt:
          type: integer
          description: >-
            A timestamp indicating when the dispute was created. (Epoch
            timestamp in seconds, timezone UTC +0.00)
        openingNote:
          type: string
          description: >-
            Text from the customer describing why the dispute was opened or the
            reason for the complaint. While dispute category codes are helpful
            at informing what a merchant should present, it doesn’t provide
            reasoning behind the customer’s complaint. In some cases, this can
            help merchants troubleshoot the dispute directly with their
            customers.
        openingNoteAttachments:
          type: array
          items:
            type: string
          description: >-
            Attachments to supplement the `openingNote` if the customer provided
            photos or screenshots as part of their dispute description.
        updatedAt:
          type:
            - integer
            - 'null'
          description: >-
            Timestamp when the dispute was updated. (Epoch timestamp in seconds,
            timezone UTC +0.00)
        closingReason:
          oneOf:
            - $ref: '#/components/schemas/DisputeClosingReason'
            - type: 'null'
          description: >-
            A reason indicating how the final decision on the dispute was
            reached. Recommended possible values listed in Closing Reasons.
        closingNote:
          type:
            - string
            - 'null'
          description: >-
            Text describing in detail how the final decision on the dispute was
            reached. This supplements the `closingReason`.
        merchantOrderId:
          type:
            - string
            - 'null'
          description: The identifier for the transaction on the merchant side.
        transactionDate:
          type:
            - integer
            - 'null'
          description: >-
            The timestamp of the order created by the customer. (Epoch timestamp
            in seconds, timezone UTC +0.00)
        settlementAmount:
          type:
            - string
            - 'null'
          description: The settlementAmount for audit usage.
        partialRefundAmount:
          type:
            - string
            - 'null'
          description: The amount partially refunded for the disputed order, if applicable.
        meta:
          $ref: '#/components/schemas/meta'
          description: The extra information for merchants to match payment.
      required:
        - id
        - order
        - amount
        - currency
        - reason
        - status
        - open
        - responseDueBy
        - createdAt
        - openingNote
        - closingReason
        - merchantOrderId
        - transactionDate
        - settlementAmount
      description: Dispute object
      title: dispute
    schemas_GetDisputeSchemaTestResponse:
      type: object
      properties:
        dispute:
          $ref: '#/components/schemas/dispute'
      required:
        - dispute
      title: GetDisputeSchemaTestResponse

```

### Needs response

The merchant has not yet accepted or challenged the dispute.

```json
{
  "id": "dp_N64jYg4RC4ZBUsXjLzE3W5",
  "order": "123456789",
  "amount": "48.46",
  "currency": "USD",
  "reason": "product_not_received",
  "status": "needs_response",
  "open": true,
  "responseDueBy": 1691884800,
  "createdAt": 1691880800,
  "openingNote": "Customer has no knowledge of the payment",
  "openingNoteAttachments": ["fi_48vmw3sXdVqvtJGXbgKbAZ"],
  "updatedAt": 1691884000,
  "closingReason": null,
  "closingNote": null,
  "merchantOrderId": "order54321",
  "transactionDate": 1691882800,
  "settlementAmount": null,
  "partialRefundAmount": null,
  "meta": {
    "transactionAmount": "48.46",
    "orderType": "ONLINE"
  }
}
```

### Under review

The merchant submitted evidence. The submission immediately challenged the dispute; no separate finalize step is required.

```json
{
  "id": "dp_N64jYg4RC4ZBUsXjLzE3W5",
  "order": "123456789",
  "amount": "48.46",
  "currency": "USD",
  "reason": "product_not_received",
  "status": "under_review",
  "open": true,
  "responseDueBy": 1691884800,
  "createdAt": 1691880800,
  "openingNote": "Customer has no knowledge of the payment",
  "openingNoteAttachments": ["fi_48vmw3sXdVqvtJGXbgKbAZ"],
  "updatedAt": 1691884000,
  "closingReason": null,
  "closingNote": null,
  "merchantOrderId": "order54321",
  "transactionDate": 1691882800,
  "settlementAmount": null,
  "partialRefundAmount": null,
  "meta": {
    "transactionAmount": "48.46",
    "orderType": "ONLINE"
  }
}
```

### Won

The submitted evidence was accepted and the dispute is closed in the merchant's favor.

```json
{
  "id": "dp_N64jYg4RC4ZBUsXjLzE3W5",
  "order": "123456789",
  "amount": "48.46",
  "currency": "USD",
  "reason": "product_not_received",
  "status": "won",
  "open": false,
  "responseDueBy": 1691884800,
  "createdAt": 1691880800,
  "openingNote": "Customer has no knowledge of the payment",
  "openingNoteAttachments": ["fi_48vmw3sXdVqvtJGXbgKbAZ"],
  "updatedAt": 1691884000,
  "closingReason": "evidence_accepted",
  "closingNote": null,
  "merchantOrderId": "order54321",
  "transactionDate": 1691882800,
  "settlementAmount": null,
  "partialRefundAmount": null,
  "meta": {
    "transactionAmount": "48.46",
    "orderType": "ONLINE"
  }
}
```