GET/v1/disputes
List card disputes
The card disputes opened against the business's payments, soonest evidence deadline first.
Paged with the cursor of the previous page. An owner or a manager.
Parameters
-
cursorquery · stringOpaque cursor from a previous page's
next_cursor. Omit to start from the beginning.Pass it back exactly as received. It is base64 and its structure is not part of this contract — decoding it, or constructing one by hand, will break without notice.
-
limitquery · integer · int32Maximum items to return. The server may return fewer, so always drive the loop from
has_morerather than from the size of the page you got back.
Responses
-
200
A page of disputes.
Dispute page · application/json
has_morebooleanRequired
Whether another page may follow.
-
itemsarray of DisputeRequired
idstring · uuidRequired
-
amountMoneyRequiredNullable
What the processor opened the dispute for, in the currency it stated it in; often less than the payment. Null when it stated none.
amountinteger · int64Required
The amount, as a whole number of the currency's minor unit. May be negative to express a refund, discount or credit.
currencyCurrencyRequired
ISO 4217 currency code.
Determines the minor unit that
Money.amountis expressed in. Zero-decimal currencies such asJPYhave a minor unit equal to the major unit.One of 182 values; see the schema.
created_atstring · date-timeRequired
currencyCurrencyRequired
ISO 4217 currency code.
Determines the minor unit that
Money.amountis expressed in. Zero-decimal currencies such asJPYhave a minor unit equal to the major unit.One of 182 values; see the schema.
deadlinestring · date-timeRequired
When evidence must reach the processor by.
-
evidenceDisputeEvidenceNullable
What the business submits: the sale the payment settled, who took it, its lines and the tip. Present on a dispute read by its id; null when the sale cannot be found.
-
amountMoneyRequired
A monetary amount in a specific currency: Square's
Money, and Stripe'samountbeside itscurrency.The amount is always an integer count of the currency's minor unit — pence for
GBP, cents forUSD. Zero-decimal currencies such asJPYhave a minor unit equal to their major unit, so{"amount": 500, "currency": "JPY"}is ¥500 while{"amount": 500, "currency": "GBP"}is £5.00.Floating point is never used for money anywhere in this API. Binary floats cannot represent most decimal fractions exactly, so accumulating them across the line items of an order produces totals that disagree with the printed receipt by a penny. Integer minor units make every arithmetic operation exact.
amountinteger · int64Required
The amount, as a whole number of the currency's minor unit. May be negative to express a refund, discount or credit.
currencyCurrencyRequired
ISO 4217 currency code.
Determines the minor unit that
Money.amountis expressed in. Zero-decimal currencies such asJPYhave a minor unit equal to the major unit.One of 182 values; see the schema.
-
linesarray of DisputeEvidenceLineRequired
namestringRequired
-
amountMoneyRequired
A monetary amount in a specific currency: Square's
Money, and Stripe'samountbeside itscurrency.The amount is always an integer count of the currency's minor unit — pence for
GBP, cents forUSD. Zero-decimal currencies such asJPYhave a minor unit equal to their major unit, so{"amount": 500, "currency": "JPY"}is ¥500 while{"amount": 500, "currency": "GBP"}is £5.00.Floating point is never used for money anywhere in this API. Binary floats cannot represent most decimal fractions exactly, so accumulating them across the line items of an order produces totals that disagree with the printed receipt by a penny. Integer minor units make every arithmetic operation exact.
amountinteger · int64Required
The amount, as a whole number of the currency's minor unit. May be negative to express a refund, discount or credit.
currencyCurrencyRequired
ISO 4217 currency code.
Determines the minor unit that
Money.amountis expressed in. Zero-decimal currencies such asJPYhave a minor unit equal to the major unit.One of 182 values; see the schema.
quantityQuantityRequired
How much of something, as a decimal string in the
unit_of_measurebeside it (eachwhere there is none), as Square'squantityis: three croissants are"3", 1.4 kg of beans is"1.4". A string because a JSON number is a binary float to most parsers.It has at most as many decimal places as its unit's base unit holds — three in
each,gandml, six inkgandl— and a finer one is refused, never rounded. Tenvelo holds every quantity as an integer of that base unit (thousandths of an each, milligrams, microlitres;docs/decisions/0063); a client that computes with one should read the digits the same way, never through a float.≤ 26 chars · pattern ^-?(0|[1-9][0-9]*)(\.[0-9]{1,6})?$
order_referencestringRequired
payment_referencestringRequired
The payment's reference at the processor.
staff_member_namestringRequired
Who took the sale; empty when no one was signed on.
-
tipMoneyRequired
A monetary amount in a specific currency: Square's
Money, and Stripe'samountbeside itscurrency.The amount is always an integer count of the currency's minor unit — pence for
GBP, cents forUSD. Zero-decimal currencies such asJPYhave a minor unit equal to their major unit, so{"amount": 500, "currency": "JPY"}is ¥500 while{"amount": 500, "currency": "GBP"}is £5.00.Floating point is never used for money anywhere in this API. Binary floats cannot represent most decimal fractions exactly, so accumulating them across the line items of an order produces totals that disagree with the printed receipt by a penny. Integer minor units make every arithmetic operation exact.
amountinteger · int64Required
The amount, as a whole number of the currency's minor unit. May be negative to express a refund, discount or credit.
currencyCurrencyRequired
ISO 4217 currency code.
Determines the minor unit that
Money.amountis expressed in. Zero-decimal currencies such asJPYhave a minor unit equal to the major unit.One of 182 values; see the schema.
-
payment_idstring · uuidRequired
processor_referencestringRequired
The processor's own reference for the dispute.
reasonstringRequired
The card-holder's reason as the processor reported it.
statusstring · enumRequired
openedevidence_submittedwonlost-
transitionsarray of DisputeTransitionEvery move of the dispute's status, oldest first. Present on a dispute read by its id.
-
amountMoneyRequiredNullable
The amount the processor gave with the move, where it gave one.
amountinteger · int64Required
The amount, as a whole number of the currency's minor unit. May be negative to express a refund, discount or credit.
currencyCurrencyRequired
ISO 4217 currency code.
Determines the minor unit that
Money.amountis expressed in. Zero-decimal currencies such asJPYhave a minor unit equal to the major unit.One of 182 values; see the schema.
processor_event_idstringRequired
The processor's own id for the event; empty when the business made the move.
processor_occurred_atstring · date-timeRequiredNullable
When the processor says the move happened.
received_atstring · date-timeRequired
When we learned of it.
sourcestring · enumRequired
processorwhen the processor said so,merchantwhen the business did here.processormerchantstatusstring · enumRequired
openedevidence_submittedwonlost
-
next_cursorstringNullable
Pass as
cursorfor the next page, whenhas_moreis true.
-
400
The request could not be parsed. Malformed JSON, a bad query parameter, or a header that failed to decode, among them an
API-Versionlater than the server speaks or not a date (api-version-unknown, with the server's own inapi_version).Distinct from
422: a400never reached validation, soinvalid_paramsis absent. Retrying without changing the request will fail again, except that a request refused for itsAPI-Versiongoes once the server is updated. -
401
No credentials, or credentials that could not be verified — missing bearer token, malformed JWT, expired token, or a signature that failed against the issuer's JWKS.
Refresh the token and retry once. Repeated
401after a refresh means the device needs to re-enrol. -
403
Authenticated, but not permitted. The token is valid and its merchant was resolved, but the caller's role does not allow this operation, or the target belongs to a different merchant.
Cross-tenant access is reported as
403on a resource the caller may not see, and as404where even confirming existence would leak information. Retrying will not help. -
410
The request names an
API-Versionthis server no longer serves (docs/decisions/0011). Nothing in it was read.api_versionnames the version the server speaks: the client is behind, and sends the request again once it is updated. -
422
The request parsed but failed validation.
invalid_paramslists every failing field with a JSON Pointer, not just the first, so a client can mark up a whole form in one pass rather than making the user fix errors one round trip at a time.Also returned when an
Idempotency-Keyis replayed with a different body, and when device-computed order totals disagree with the server's recomputation. -
429
Rate limit exceeded. Honour
Retry-Afterrather than applying your own backoff.A fleet of tills coming back online together after an outage is the realistic cause, which is exactly when uncoordinated client-side retry turns a brief outage into a sustained one. The limit is per process, and per site for what records trade there — a request spends its site's budget, and a till's own smaller one inside it — and per
(client, merchant)for everything else; noRateLimitfield is sent, so this response and itsRetry-Afterare the whole of the contract. -
500
Something failed on our side.
trace_ididentifies the request in our tracing — quote it in a support ticket.The body never carries internal detail: no SQL, no stack traces, no upstream error strings. Safe to retry with the same
Idempotency-Key.