PersonalBusinessEnterprise
    In a rush? Schedule an Appointment
    Fetching local time...
    Anytime CapitalforBusiness
    Pricing

    Get started

    • Overview
    • Quickstart
    • Test mode
    • Guides & recipes
    • Switch from Stripe
    • Import from Shopify
    • Import from WooCommerce
    • Import from Square
    • Import a CSV file
    • Stripe API mapping
    • Pricing
    • Support
    • FAQ

    Payments

    • Checkout & website
    • Guide: Next.js checkout
    • In person (QR)
    • Payment methods
    • Stablecoin checkout
    • Guide: take stablecoins
    • Fraud rules & 3D Secure
    • Dispute evidence
    • International customers
    • Guide: safe refunds
    • Bank transfers on invoices

    Billing

    • Subscription discounts
    • Guide: sell subscriptions
    • Usage billing
    • Guide: report usage

    Money movement

    • Payout options
    • Guide: reconcile payouts
    • Accounting sync
    • Revenue analytics

    Developers

    • Authentication
    • Errors & retries
    • Pagination
    • Idempotency
    • Rate limits
    • Webhooks
    • Verify webhooks
    • Node SDK (preview)
    • CLI (preview)
    • Postman collection

    AI

    • AI agents hub
    • Safe AI agents
    • Custom agents
    • Prompt library

    Integrations

    • Website builders
    • Shopify
    • Shopify orders by invoice
    • WooCommerce
    • Zapier
    • Slack, Discord and Teams

    Reference

    • Payments
    • Refunds
    • Disputes
    • Payment links
    • Invoices
    • Customers
    • Products
    • Subscriptions & plans
    • Discount codes
    • Meters & usage events
    • Payouts & balance
    • Webhook endpoints
    • Events
    • Test helpers
    • OpenAPI spec
    • Error codes
    • Changelog
    • Glossary

    For AI tools

    • llms-full.txt
    • MCP server
    • openapi.json
    Docs menu · Disputes

    Get started

    • Overview
    • Quickstart
    • Test mode
    • Guides & recipes
    • Switch from Stripe
    • Import from Shopify
    • Import from WooCommerce
    • Import from Square
    • Import a CSV file
    • Stripe API mapping
    • Pricing
    • Support
    • FAQ

    Payments

    • Checkout & website
    • Guide: Next.js checkout
    • In person (QR)
    • Payment methods
    • Stablecoin checkout
    • Guide: take stablecoins
    • Fraud rules & 3D Secure
    • Dispute evidence
    • International customers
    • Guide: safe refunds
    • Bank transfers on invoices

    Billing

    • Subscription discounts
    • Guide: sell subscriptions
    • Usage billing
    • Guide: report usage

    Money movement

    • Payout options
    • Guide: reconcile payouts
    • Accounting sync
    • Revenue analytics

    Developers

    • Authentication
    • Errors & retries
    • Pagination
    • Idempotency
    • Rate limits
    • Webhooks
    • Verify webhooks
    • Node SDK (preview)
    • CLI (preview)
    • Postman collection

    AI

    • AI agents hub
    • Safe AI agents
    • Custom agents
    • Prompt library

    Integrations

    • Website builders
    • Shopify
    • Shopify orders by invoice
    • WooCommerce
    • Zapier
    • Slack, Discord and Teams

    Reference

    • Payments
    • Refunds
    • Disputes
    • Payment links
    • Invoices
    • Customers
    • Products
    • Subscriptions & plans
    • Discount codes
    • Meters & usage events
    • Payouts & balance
    • Webhook endpoints
    • Events
    • Test helpers
    • OpenAPI spec
    • Error codes
    • Changelog
    • Glossary

    For AI tools

    • llms-full.txt
    • MCP server
    • openapi.json
    DocsReferenceDisputes

    Disputes API

    Read the disputes and chargebacks on your payments with the Anytime Capital Payments API: status, reason, amount, evidence deadline and evidence pack.

    View as MarkdownOpen in Claude

    Disputes on your payments, as the Disputes page lists them. The API reads them; respond with evidence from Disputes in the dashboard before evidenceDueAt. The list's nextCursor is opaque: pass it back exactly as it came. Disputes can only be read, so a key's disputes access stops at read.

    Each dispute carries its automatic evidence pack as evidence: whether it is built, how strong we read the case, whether we advise accepting, whether its PDF is attached to the response, and when it was or will be submitted. It is null when there is no pack. See Dispute evidence for what goes into a pack.

    TopicDetail
    Endpoints`GET /api/v1/disputes`, `GET /api/v1/disputes/{id}`
    Key permissionsdisputes:read
    Samplescurl; Node.js 18+ with the built-in fetch (in an ES module); the Node SDK (preview: not on npm yet); Python with requests.
    Every request can also answer401 UNAUTHORIZED, 401 API_KEY_EXPIRED, 403 NOT_ENROLLED, 403 PERMISSION_DENIED, 403 IP_NOT_ALLOWED, 429 RATE_LIMITED, 500 INTERNAL_ERROR. See Error codes.

    The dispute object

    JSON
    {
      "object": "dispute",
      "livemode": true,
      "id": "dspt_7Hq2LmX9cR4t",
      "paymentId": "pay_7Hq2LmX9cR4tVb",
      "amountCents": 12500,
      "currency": "usd",
      "status": "needs_response",
      "reason": "product_not_received",
      "inquiry": false,
      "customer": {
        "name": "Jordan Lee",
        "email": "jordan@example.com"
      },
      "card": {
        "brand": "visa",
        "last4": "4242"
      },
      "evidenceDueAt": "2026-11-01T23:59:59.000Z",
      "evidenceSubmittedAt": null,
      "createdAt": "2026-10-18T08:30:00.000Z",
      "evidence": {
        "status": "ready",
        "strength": "strong",
        "recommendAccept": false,
        "documentReady": true,
        "builtAt": "2026-10-18T08:31:12.000Z",
        "submittedAt": null,
        "autoSubmitAt": "2026-10-30T23:59:59.000Z"
      }
    }
    FieldTypeDescription
    objectstringThe type of object. Always dispute.
    livemodebooleanFalse for test-mode data (an ak_test_ key); true for live data.
    idstringdspt_…
    paymentIdstringpay_…
    amountCentsintegerDisputed. Integer cents.
    currencystringusd.
    statusstringneeds_response (respond before evidenceDueAt), under_review, then won, lost or closed.
    reasonstringWhat the customer's bank gave as the reason: fraudulent, unrecognized, declined_authorization, product_not_received, product_unacceptable, subscription_canceled, credit_not_processed, duplicate, processing_error, documentation_request, bank_cannot_process, other.
    inquirybooleanAn inquiry or early warning rather than a chargeback.
    customerobject
    customer.namestring or nullName.
    customer.emailstring or nullEmail.
    cardobject or null
    card.brandstring or nullNetwork.
    card.last4string or nullLast four.
    evidenceDueAtstring (date-time) or nullRespond in the dashboard before this.
    evidenceSubmittedAtstring (date-time) or nullEvidence submitted.
    createdAtstring (date-time)Opened.
    evidenceobject or nullThe automatic evidence pack; null while there is none.
    evidence.statusstringbuilding (just opened, or rebuilding), ready, or failed (rebuild it from Disputes).
    evidence.strengthstring or nullstrong, fair or weak: our read of the case once built, for you only. Never sent to the bank.
    evidence.recommendAcceptbooleanYour own records back the customer: we advise accepting, and never submit it automatically.
    evidence.documentReadybooleanThe pack's PDF, with the customer's receipt, is attached to the dispute response.
    evidence.builtAtstring (date-time) or nullBuilt.
    evidence.submittedAtstring (date-time) or nullSubmitted with the pack, by your team or automatically.
    evidence.autoSubmitAtstring (date-time) or nullWhen we'll submit the response for you: automatic submission is on, nobody has submitted, we don't advise accepting, and the deadline is still ahead. Otherwise null.

    Endpoints

    List disputes

    GET/api/v1/disputes
    Permission disputes:read

    Disputes on the business's payments, newest first. Respond in the dashboard. The cursor is opaque. Each dispute carries its automatic evidence pack as evidence: building right after the dispute opens, then ready (or failed), and null when there is none (automatic building is off and nobody has built one). See Dispute evidence.

    Query

    status
    string
    Only disputes with this status. One of needs_response, under_review, won, lost, closed.
    limit
    integer
    How many objects per page, 1–100. Default 25. See Pagination.
    cursor
    string
    The previous page's nextCursor, for the page after it.
    Request
    curl "https://anytime-capital.com/api/v1/disputes?status=needs_response" \
      -H "Authorization: Bearer $ANYTIME_API_KEY"
    const res = await fetch("https://anytime-capital.com/api/v1/disputes?status=needs_response", {
      headers: { Authorization: `Bearer ${process.env.ANYTIME_API_KEY}` },
    });
    const page = await res.json();
    if (!res.ok) throw new Error(`${page.error.code}: ${page.error.message}`);
    import { AnytimeCapital } from "@anytimecapital/node";
    
    const client = new AnytimeCapital({ apiKey: process.env.ANYTIME_API_KEY! });
    
    const page = await client.disputes.list({ status: "needs_response" });
    import os
    
    import requests
    
    res = requests.get(
        "https://anytime-capital.com/api/v1/disputes",
        headers={"Authorization": f"Bearer {os.environ['ANYTIME_API_KEY']}"},
        params={"status": "needs_response"},
        timeout=30,
    )
    page = res.json()
    if not res.ok:
        raise RuntimeError(f"{page['error']['code']}: {page['error']['message']}")
    Response 200
    {
      "object": "list",
      "data": [
        {
          "object": "dispute",
          "livemode": true,
          "id": "dspt_3Kw9PzR6tY2m",
          "paymentId": "pay_3Kw9PzR6tY2mQa",
          "amountCents": 4900,
          "currency": "usd",
          "status": "needs_response",
          "reason": "fraudulent",
          "inquiry": false,
          "customer": {
            "name": "Sam Ortiz",
            "email": "sam@example.com"
          },
          "card": {
            "brand": "mastercard",
            "last4": "4444"
          },
          "evidenceDueAt": "2026-11-08T23:59:59.000Z",
          "evidenceSubmittedAt": null,
          "createdAt": "2026-10-24T14:02:00.000Z",
          "evidence": {
            "status": "building",
            "strength": null,
            "recommendAccept": false,
            "documentReady": false,
            "builtAt": null,
            "submittedAt": null,
            "autoSubmitAt": null
          }
        },
        {
          "object": "dispute",
          "livemode": true,
          "id": "dspt_7Hq2LmX9cR4t",
          "paymentId": "pay_7Hq2LmX9cR4tVb",
          "amountCents": 12500,
          "currency": "usd",
          "status": "needs_response",
          "reason": "product_not_received",
          "inquiry": false,
          "customer": {
            "name": "Jordan Lee",
            "email": "jordan@example.com"
          },
          "card": {
            "brand": "visa",
            "last4": "4242"
          },
          "evidenceDueAt": "2026-11-01T23:59:59.000Z",
          "evidenceSubmittedAt": null,
          "createdAt": "2026-10-18T08:30:00.000Z",
          "evidence": {
            "status": "ready",
            "strength": "strong",
            "recommendAccept": false,
            "documentReady": true,
            "builtAt": "2026-10-18T08:31:12.000Z",
            "submittedAt": null,
            "autoSubmitAt": "2026-10-30T23:59:59.000Z"
          }
        }
      ],
      "hasMore": false,
      "nextCursor": null
    }

    Errors

    400INVALID_INPUT
    A field, filter, limit or cursor is missing or invalid. The message starts with the field's name, as in amountCents: …, or reads Invalid cursor. Fix the named field. Don't retry the same request unchanged.
    502PROCESSOR_ERROR
    The payments network didn't answer in time. Retry with the same Idempotency-Key. A refund is keyed at the network by that key too, so a retry never refunds twice.
    503NOT_CONFIGURED
    The part of Anytime Capital Payments this needs isn't available right now. Retry later, with the same Idempotency-Key on a write.

    Get a dispute

    GET/api/v1/disputes/{id}
    Permission disputes:read

    One dispute. evidence.documentReady is true once the pack's PDF is attached to the response, and evidence.autoSubmitAt says when we'll submit it for you (automatic submission on, nobody has submitted, and we don't advise accepting). strength and recommendAccept are our read of the case; neither is ever sent to the bank.

    Path

    id
    stringrequired
    dspt_…
    Request
    curl https://anytime-capital.com/api/v1/disputes/dspt_7Hq2LmX9cR4t \
      -H "Authorization: Bearer $ANYTIME_API_KEY"
    const res = await fetch("https://anytime-capital.com/api/v1/disputes/dspt_7Hq2LmX9cR4t", {
      headers: { Authorization: `Bearer ${process.env.ANYTIME_API_KEY}` },
    });
    const dispute = await res.json();
    if (!res.ok) throw new Error(`${dispute.error.code}: ${dispute.error.message}`);
    import { AnytimeCapital } from "@anytimecapital/node";
    
    const client = new AnytimeCapital({ apiKey: process.env.ANYTIME_API_KEY! });
    
    const dispute = await client.disputes.retrieve("dspt_7Hq2LmX9cR4t");
    import os
    
    import requests
    
    res = requests.get(
        "https://anytime-capital.com/api/v1/disputes/dspt_7Hq2LmX9cR4t",
        headers={"Authorization": f"Bearer {os.environ['ANYTIME_API_KEY']}"},
        timeout=30,
    )
    dispute = res.json()
    if not res.ok:
        raise RuntimeError(f"{dispute['error']['code']}: {dispute['error']['message']}")
    Response 200
    {
      "object": "dispute",
      "livemode": true,
      "id": "dspt_7Hq2LmX9cR4t",
      "paymentId": "pay_7Hq2LmX9cR4tVb",
      "amountCents": 12500,
      "currency": "usd",
      "status": "needs_response",
      "reason": "product_not_received",
      "inquiry": false,
      "customer": {
        "name": "Jordan Lee",
        "email": "jordan@example.com"
      },
      "card": {
        "brand": "visa",
        "last4": "4242"
      },
      "evidenceDueAt": "2026-11-01T23:59:59.000Z",
      "evidenceSubmittedAt": null,
      "createdAt": "2026-10-18T08:30:00.000Z",
      "evidence": {
        "status": "ready",
        "strength": "strong",
        "recommendAccept": false,
        "documentReady": true,
        "builtAt": "2026-10-18T08:31:12.000Z",
        "submittedAt": null,
        "autoSubmitAt": "2026-10-30T23:59:59.000Z"
      }
    }

    Errors

    404NOT_FOUND
    No such object on your business (an id from another business reads the same), or no such endpoint under /api/v1, which still answers in JSON. Check the id and the path. Ids are case-sensitive.
    502PROCESSOR_ERROR
    The payments network didn't answer in time. Retry with the same Idempotency-Key. A refund is keyed at the network by that key too, so a retry never refunds twice.
    503NOT_CONFIGURED
    The part of Anytime Capital Payments this needs isn't available right now. Retry later, with the same Idempotency-Key on a write.

    Events

    dispute.opened and dispute.closed carry the disputed payment (its dispute.status says where it stands); dispute.updated carries the dispute itself when evidence is submitted or its status changes. See Webhooks and Fraud rules & 3D Secure for preventing them.

    PreviousRefundsNext Payment links

    Anytime Capital is a fintech company, not a bank. Payment processing, banking and payout services are provided by Anytime Capital's licensed partners. Rates shown are for US card payments; international cards, currency conversion and disputes may carry additional fees shown in your dashboard before you accept a payment.

    On this page

    • The dispute object
    • Endpoints
    • List disputes
    • Get a dispute
    • Events
    Anytime Capital
    (470) 748-2530
    App Store

    Business

    • Business Checking
    • Business Debit Cards
    • Payments
    • Ecommerce Payments
    • Invoicing
    • Developer Docs

    Solutions

    • CPAs & Accountants
    • Financial Advisors
    • Boat & Auto Dealerships
    • Dental & Medical Practices
    • Creators & Coaches
    • All solutions

    Crypto

    • Crypto Wallet
    • Tether Wallet
    • Buy Digital Assets
    • Explore Markets
    • Security & Licenses
    • Compare Platforms
    • Bitcoin ATM Alternative

    Company

    • Our Story
    • Schedule Appointment
    • Careers
    • Media & Press
    • Investor Relations
    • FAQ

    Branches

    • Atlanta, Georgia
    • Miami, Florida
    • Houston, Texas
    • All branches

    Legal

    • Terms & Conditions
    • Privacy Policy
    • Your Privacy Choices
    • Fraud Notice

    © 2026 Anytime Capital LLC. Anytime Capital is a fintech company, not a bank.

    The Anytime Capital Mastercard® Prepaid Card is issued by Pathward®, N.A., Member FDIC. Mastercard® is a registered trademark of Mastercard International Incorporated. All other trademarks and service marks belong to their respective owners.

    Mastercard