import Shoply from "@shoplygg/node";
const shoply = new Shoply({ apiKey: process.env.SHOPLY_API_KEY });
const result = await shoply.disputes.get("DISPUTE_ID");
<?php
require 'vendor/autoload.php';
$shoply = new Shoply\Client(['apiKey' => getenv('SHOPLY_API_KEY')]);
$result = $shoply->disputes->get('DISPUTE_ID');
import shoply
client = shoply.Client() # reads SHOPLY_API_KEY
result = client.disputes.get("DISPUTE_ID")
curl --request GET \
--url https://api.shoply.gg/v1/stores/{storeId}/disputes/{disputeId} \
--header 'Authorization: Bearer <token>'package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.shoply.gg/v1/stores/{storeId}/disputes/{disputeId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.shoply.gg/v1/stores/{storeId}/disputes/{disputeId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.shoply.gg/v1/stores/{storeId}/disputes/{disputeId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"message": null,
"code": null,
"data": {
"id": "ae36fc25-3cea-4d17-acaa-4bdb43d84a0e",
"orderId": "71ed606f-3119-4f9f-b7f7-ecd25740e15b",
"email": "mila@example.com",
"provider": "stripe",
"providerName": "Stripe",
"externalId": "dp_1QdZ8x2eZvKYlo2C",
"reason": "fraudulent",
"reasonText": "Says they did not make the payment",
"stage": "chargeback",
"providerStatus": "needs_response",
"status": "needs_response",
"amount": 49,
"currency": "USD",
"dueAt": "2026-10-27T16:20:19Z",
"answer": {
"state": "draft",
"at": null,
"by": "",
"note": ""
},
"answeredFrom": "provider",
"answerPlace": "your Stripe Dashboard",
"accessTaken": false,
"dateCreated": "2026-10-22T16:20:19Z",
"dateClosed": null,
"order": {
"id": "71ed606f-3119-4f9f-b7f7-ecd25740e15b",
"status": "completed",
"amount": 49,
"currency": "USD",
"dateCreated": "2026-10-10T16:20:19Z"
},
"can": {
"edit": true,
"submit": false,
"accept": false,
"markSubmitted": true
},
"records": [
{
"key": "buyer",
"title": "The Buyer",
"facts": [
{
"key": "email",
"name": "Email",
"value": "mila@example.com",
"strong": false
},
{
"key": "name",
"name": "Name",
"value": "Mila Kowalski",
"strong": false
}
]
},
{
"key": "order",
"title": "The Order",
"facts": [
{
"key": "placed",
"name": "Placed",
"value": "Oct 10, 2026, 4:20 PM UTC",
"strong": false
},
{
"key": "paid",
"name": "Paid",
"value": "Oct 10, 2026, 4:20 PM UTC · $49.00 · Credit/Debit Card (Stripe)",
"strong": false
}
]
}
],
"activity": [
"2026-10-19 16:20 UTC · Opened their order (order page) · 203.0.113.42 (the address they paid from) · Germany · Chrome on Windows"
],
"draft": {
"decision": "fight",
"contacted": "no",
"used": "yes",
"words": "The buyer bought a license key and opened their order again from the address they paid from.",
"saved": true,
"statement": "The buyer bought a license key and opened their order again from the address they paid from.\n\nThe buyer did not contact the store before disputing the payment. What they bought was used.\n\nWhat the store's records show:\n- Email: mila@example.com\n- Name: Mila Kowalski\n- Billing Address: Berlin, Germany\n- Checkout From: 203.0.113.42 · Germany · Chrome on Windows\n- Placed: Oct 10, 2026, 4:20 PM UTC\n…"
},
"files": [],
"after": [
{
"key": "blacklist",
"done": false,
"text": "The buyer is not blacklisted"
},
{
"key": "access",
"done": false,
"text": "Their keys and files are shown to them"
}
],
"history": [
{
"at": "2026-10-19T16:20:19Z",
"what": "The buyer opened their order",
"detail": "203.0.113.42, Germany"
}
]
}
}{
"success": false,
"message": "<string>",
"code": "<string>",
"data": null,
"errors": {}
}{
"success": false,
"message": "<string>",
"code": "<string>",
"data": null,
"errors": {}
}{
"success": false,
"message": "<string>",
"code": "<string>",
"data": null,
"errors": {}
}{
"success": false,
"message": "<string>",
"code": "<string>",
"data": null,
"errors": {}
}Get a dispute
One dispute with everything its page shows. records is what Shoply recorded about the order, in four groups (the buyer, the order, after delivery, history), each fact a name and a value in words, strong on the order being opened again from the address it was paid from. A delivered license key or file is never in it. activity is every look at the order after delivery, a line each. draft is the store’s answer as it was left, with statement, the whole of what is sent. can says what may be done now: edit, submit, accept and markSubmitted. files are the store’s own files for the answer, after what was done on Shoply’s side (the buyer blacklisted, their keys and files hidden), and history the dispute’s story, newest first.
Needs the disputes.read permission (Read Disputes).
import Shoply from "@shoplygg/node";
const shoply = new Shoply({ apiKey: process.env.SHOPLY_API_KEY });
const result = await shoply.disputes.get("DISPUTE_ID");
<?php
require 'vendor/autoload.php';
$shoply = new Shoply\Client(['apiKey' => getenv('SHOPLY_API_KEY')]);
$result = $shoply->disputes->get('DISPUTE_ID');
import shoply
client = shoply.Client() # reads SHOPLY_API_KEY
result = client.disputes.get("DISPUTE_ID")
curl --request GET \
--url https://api.shoply.gg/v1/stores/{storeId}/disputes/{disputeId} \
--header 'Authorization: Bearer <token>'package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.shoply.gg/v1/stores/{storeId}/disputes/{disputeId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.shoply.gg/v1/stores/{storeId}/disputes/{disputeId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.shoply.gg/v1/stores/{storeId}/disputes/{disputeId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"message": null,
"code": null,
"data": {
"id": "ae36fc25-3cea-4d17-acaa-4bdb43d84a0e",
"orderId": "71ed606f-3119-4f9f-b7f7-ecd25740e15b",
"email": "mila@example.com",
"provider": "stripe",
"providerName": "Stripe",
"externalId": "dp_1QdZ8x2eZvKYlo2C",
"reason": "fraudulent",
"reasonText": "Says they did not make the payment",
"stage": "chargeback",
"providerStatus": "needs_response",
"status": "needs_response",
"amount": 49,
"currency": "USD",
"dueAt": "2026-10-27T16:20:19Z",
"answer": {
"state": "draft",
"at": null,
"by": "",
"note": ""
},
"answeredFrom": "provider",
"answerPlace": "your Stripe Dashboard",
"accessTaken": false,
"dateCreated": "2026-10-22T16:20:19Z",
"dateClosed": null,
"order": {
"id": "71ed606f-3119-4f9f-b7f7-ecd25740e15b",
"status": "completed",
"amount": 49,
"currency": "USD",
"dateCreated": "2026-10-10T16:20:19Z"
},
"can": {
"edit": true,
"submit": false,
"accept": false,
"markSubmitted": true
},
"records": [
{
"key": "buyer",
"title": "The Buyer",
"facts": [
{
"key": "email",
"name": "Email",
"value": "mila@example.com",
"strong": false
},
{
"key": "name",
"name": "Name",
"value": "Mila Kowalski",
"strong": false
}
]
},
{
"key": "order",
"title": "The Order",
"facts": [
{
"key": "placed",
"name": "Placed",
"value": "Oct 10, 2026, 4:20 PM UTC",
"strong": false
},
{
"key": "paid",
"name": "Paid",
"value": "Oct 10, 2026, 4:20 PM UTC · $49.00 · Credit/Debit Card (Stripe)",
"strong": false
}
]
}
],
"activity": [
"2026-10-19 16:20 UTC · Opened their order (order page) · 203.0.113.42 (the address they paid from) · Germany · Chrome on Windows"
],
"draft": {
"decision": "fight",
"contacted": "no",
"used": "yes",
"words": "The buyer bought a license key and opened their order again from the address they paid from.",
"saved": true,
"statement": "The buyer bought a license key and opened their order again from the address they paid from.\n\nThe buyer did not contact the store before disputing the payment. What they bought was used.\n\nWhat the store's records show:\n- Email: mila@example.com\n- Name: Mila Kowalski\n- Billing Address: Berlin, Germany\n- Checkout From: 203.0.113.42 · Germany · Chrome on Windows\n- Placed: Oct 10, 2026, 4:20 PM UTC\n…"
},
"files": [],
"after": [
{
"key": "blacklist",
"done": false,
"text": "The buyer is not blacklisted"
},
{
"key": "access",
"done": false,
"text": "Their keys and files are shown to them"
}
],
"history": [
{
"at": "2026-10-19T16:20:19Z",
"what": "The buyer opened their order",
"detail": "203.0.113.42, Germany"
}
]
}
}{
"success": false,
"message": "<string>",
"code": "<string>",
"data": null,
"errors": {}
}{
"success": false,
"message": "<string>",
"code": "<string>",
"data": null,
"errors": {}
}{
"success": false,
"message": "<string>",
"code": "<string>",
"data": null,
"errors": {}
}{
"success": false,
"message": "<string>",
"code": "<string>",
"data": null,
"errors": {}
}Authorizations
A secret API key, made under Developers in the dashboard: Authorization: Bearer shoply_sk_...
Path Parameters
The store's ID. A key reaches the store it was made in: GET /key answers which.
The dispute, by its ID.

