Disputes
Every request goes to https://api.lemak.cash. About the reference.
List disputes
GET /v1/disputes
Authentication
Bearer key. The merchant API key, sk_live_ or sk_test_. It reaches /v1 alone. A test key works from the moment the merchant exists. A live key answers 403 live_not_enabled until the merchant's review opens live mode, before any rate limit is spent.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
Api-Version optional | header | string | The version this request is answered at. Absent, the account's pinned version applies, and an account is pinned to info.version on its first request. A version this service does not render is refused with 400 invalid_api_version. api/CHANGELOG.md lists every version. Pattern ^[0-9]{4}-[0-9]{2}-[0-9]{2}$. |
limit optional | query | integer | Minimum 1. Maximum 100. Default 20. |
starting_after optional | query | string | The id of the last object on the previous page. |
status optional | query | string | One of opened, under_review, won, lost. |
Responses
200
A page of disputes, newest first.
application/json
DisputeList
| Field | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
object required | list | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
data required | array of Dispute | Fields of data
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
has_more required | boolean |
Errors
Every error answers with the error object.
| Status | When |
|---|---|
| Other | 400 bad parameter, 401 authentication, 402 payment failed, 403 forbidden, 404 not found, 409 conflict, 413 request_too_large (a body over 64 KiB), 422 idempotency key reused, 429 rate limited, 5xx api error. |
Example
curl https://api.lemak.cash/v1/disputes \
-H "Authorization: Bearer sk_test_..." \
-H "Api-Version: 2026-09-01"
Dispute
GET /v1/disputes/{id}
Authentication
Bearer key. The merchant API key, sk_live_ or sk_test_. It reaches /v1 alone. A test key works from the moment the merchant exists. A live key answers 403 live_not_enabled until the merchant's review opens live mode, before any rate limit is spent.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
id required | path | string | Pattern ^dp_[0-9A-Za-z]+$. |
Api-Version optional | header | string | The version this request is answered at. Absent, the account's pinned version applies, and an account is pinned to info.version on its first request. A version this service does not render is refused with 400 invalid_api_version. api/CHANGELOG.md lists every version. Pattern ^[0-9]{4}-[0-9]{2}-[0-9]{2}$. |
Responses
200
The dispute.
application/json
Dispute
| Field | Type | Description | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
id required | string | ||||||||||
object required | dispute | ||||||||||
payment_intent required | string | ||||||||||
status required | string | One of opened, under_review, won, lost. | |||||||||
amount required | integer (int64) | What the channel claims back, in the currency the payer paid in. | |||||||||
currency required | string | Pattern ^[A-Z]{3}$. | |||||||||
held optional | Money | The settlement currency frozen while the dispute is open.Fields of held
| |||||||||
fee optional | Money | What a lost dispute costs on top of the claim.Fields of fee
| |||||||||
reason optional | string | ||||||||||
evidence optional | object | ||||||||||
due_by optional | string (date-time) | ||||||||||
opened_at required | string (date-time) | ||||||||||
closed_at optional | string (date-time) |
Errors
Every error answers with the error object.
| Status | When |
|---|---|
| Other | 400 bad parameter, 401 authentication, 402 payment failed, 403 forbidden, 404 not found, 409 conflict, 413 request_too_large (a body over 64 KiB), 422 idempotency key reused, 429 rate limited, 5xx api error. |
Example
curl https://api.lemak.cash/v1/disputes/dp_123 \
-H "Authorization: Bearer sk_test_..." \
-H "Api-Version: 2026-09-01"
Submit dispute evidence
POST /v1/disputes/{id}/evidence
Merge evidence into the dispute. The platform forwards it to the channel and rules on the outcome; a dispute that already carries a ruling accepts none.
Authentication
Bearer key. The merchant API key, sk_live_ or sk_test_. It reaches /v1 alone. A test key works from the moment the merchant exists. A live key answers 403 live_not_enabled until the merchant's review opens live mode, before any rate limit is spent.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
id required | path | string | Pattern ^dp_[0-9A-Za-z]+$. |
Idempotency-Key required | header | string | At most 255 characters. |
Api-Version optional | header | string | The version this request is answered at. Absent, the account's pinned version applies, and an account is pinned to info.version on its first request. A version this service does not render is refused with 400 invalid_api_version. api/CHANGELOG.md lists every version. Pattern ^[0-9]{4}-[0-9]{2}-[0-9]{2}$. |
Request body
application/json
DisputeEvidence
| Field | Type | Description |
|---|---|---|
evidence required | object | Merged into the evidence already on the dispute, key by key. |
Responses
200
The dispute, with the evidence merged in.
application/json
Dispute
| Field | Type | Description | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
id required | string | ||||||||||
object required | dispute | ||||||||||
payment_intent required | string | ||||||||||
status required | string | One of opened, under_review, won, lost. | |||||||||
amount required | integer (int64) | What the channel claims back, in the currency the payer paid in. | |||||||||
currency required | string | Pattern ^[A-Z]{3}$. | |||||||||
held optional | Money | The settlement currency frozen while the dispute is open.Fields of held
| |||||||||
fee optional | Money | What a lost dispute costs on top of the claim.Fields of fee
| |||||||||
reason optional | string | ||||||||||
evidence optional | object | ||||||||||
due_by optional | string (date-time) | ||||||||||
opened_at required | string (date-time) | ||||||||||
closed_at optional | string (date-time) |
Errors
Every error answers with the error object.
| Status | When |
|---|---|
| Other | 400 bad parameter, 401 authentication, 402 payment failed, 403 forbidden, 404 not found, 409 conflict, 413 request_too_large (a body over 64 KiB), 422 idempotency key reused, 429 rate limited, 5xx api error. |
Example
curl -X POST https://api.lemak.cash/v1/disputes/dp_123/evidence \
-H "Authorization: Bearer sk_test_..." \
-H "Idempotency-Key: <Idempotency-Key>" \
-H "Api-Version: 2026-09-01" \
-H "Content-Type: application/json" \
-d '{
"evidence": {
"key": "value"
}
}'