Docs
Dashboard
On this page

    Disputes

    10 endpoints. Each needs an API key or OAuth token with the scope shown; the key already names its store, so paths start at /v1/store. Generated from the live contract; also in openapi.json.

    Chargebacks and buyer claims in one queue

    GET/v1/store/disputes

    Or name the store: GET /v1/stores/{storeId}/disputes

    orders:readlistDisputes

    Parameters

    • tab"open" | "needs_response" | "under_review" | "won" | "lost" | "claims" | "all"query
    • qstring | nullquery
    • cursorstring | nullquery
    • limitinteger | stringquery
    • kind"chargeback" | "claim" | nullquery
    • reason"fraudulent" | "not_received" | "not_as_described" | "not_working" | "duplicate" | "unrecognized" | "credit_not_processed" | "subscription_canceled" | "wrong_item" | "general" | "other" | nullquery
    • sort"due" | "order" | "customer" | "type" | "reason" | "amount" | "status" | "opened"query
    • dir"asc" | "desc"query

    Response ListDisputesResponse

    • itemsDisputeRow[]required
    • nextCursorCursor | nullrequired
    • countsDisputeCountsrequired

    Example

    curl "https://api.shopfa.st/v1/store/disputes" \
      -H "Authorization: Bearer $SHOPFAST_API_KEY"
    const res = await fetch('https://api.shopfa.st/v1/store/disputes', {
      method: 'GET',
      headers: {
        Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
      },
    });
    if (!res.ok) throw new Error((await res.json()).detail);
    const data = await res.json();
    import os, requests
    
    res = requests.request(
        "GET",
        "https://api.shopfa.st/v1/store/disputes",
        headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
    )
    res.raise_for_status()
    data = res.json()
    req, _ := http.NewRequest("GET", "https://api.shopfa.st/v1/store/disputes", nil)
    req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
    res, err := http.DefaultClient.Do(req)
    Try it with your key

    Use a test key on a development store. The key stays in this tab (sessionStorage) and is sent only to the base URL above.

    A dispute with its evidence, timeline and ledger effect

    GET/v1/store/disputes/{disputeId}

    Or name the store: GET /v1/stores/{storeId}/disputes/{disputeId}

    orders:readgetDispute

    Parameters

    • disputeIddsp_…pathrequired

    Response DisputeDetail

    • idDisputeIdrequired
    • kindDisputeKindrequired
    • sourceDisputeSourcerequired
    • statusDisputeStatusrequired
    • reasonDisputeReasonrequired
    • orderIdOrderIdrequired
    • orderNumberstringrequired
    • customerIdCustomerId | nullrequired
    • customerNamestringrequired
    • customerEmailstringrequired
    18 more fields
    • amountMinorMinorUnitsrequired
    • feeMinorMinorUnitsrequired
    • currencyCurrencyCoderequired
    • providerGatewayProviderrequired
    • providerDisputeIdstringrequired
    • dueAtTimestamp | nullrequired
    • resolutionClaimResolution | nullrequired
    • openedAtTimestamprequired
    • closedAtTimestamp | nullrequired
    • stageDisputeStage | nullrequired
    • buyerMessagestringrequired
    • evidenceDisputeEvidencerequired
    • eventsDisputeEvent[]required
    • ledgerobjectrequired
      • heldMinorMinorUnitsrequired
      • returnedMinorMinorUnitsrequired
      • lostMinorMinorUnitsrequired
      • feeMinorMinorUnitsrequired
    • orderStatusOrderStatusrequired
    • isTestbooleanrequired
    • actionsDisputeActionsrequired
    • buyerBlockedbooleanrequired

    Example

    curl "https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk" \
      -H "Authorization: Bearer $SHOPFAST_API_KEY"
    const res = await fetch('https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk', {
      method: 'GET',
      headers: {
        Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
      },
    });
    if (!res.ok) throw new Error((await res.json()).detail);
    const data = await res.json();
    import os, requests
    
    res = requests.request(
        "GET",
        "https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk",
        headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
    )
    res.raise_for_status()
    data = res.json()
    req, _ := http.NewRequest("GET", "https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk", nil)
    req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
    res, err := http.DefaultClient.Do(req)
    Try it with your key

    Use a test key on a development store. The key stays in this tab (sessionStorage) and is sent only to the base URL above.

    Save the written part of the evidence

    PUT/v1/store/disputes/{disputeId}/evidence

    Or name the store: PUT /v1/stores/{storeId}/disputes/{disputeId}/evidence

    orders:writesaveDisputeEvidence

    Parameters

    • disputeIddsp_…pathrequired

    Body

    • textobjectrequired
      • productDescriptionstring
      • refundPolicystring
      • customerCommunicationstring
      • refusalExplanationstring
      • additionalNotesstring

    Response DisputeDetail

    • idDisputeIdrequired
    • kindDisputeKindrequired
    • sourceDisputeSourcerequired
    • statusDisputeStatusrequired
    • reasonDisputeReasonrequired
    • orderIdOrderIdrequired
    • orderNumberstringrequired
    • customerIdCustomerId | nullrequired
    • customerNamestringrequired
    • customerEmailstringrequired
    18 more fields
    • amountMinorMinorUnitsrequired
    • feeMinorMinorUnitsrequired
    • currencyCurrencyCoderequired
    • providerGatewayProviderrequired
    • providerDisputeIdstringrequired
    • dueAtTimestamp | nullrequired
    • resolutionClaimResolution | nullrequired
    • openedAtTimestamprequired
    • closedAtTimestamp | nullrequired
    • stageDisputeStage | nullrequired
    • buyerMessagestringrequired
    • evidenceDisputeEvidencerequired
    • eventsDisputeEvent[]required
    • ledgerobjectrequired
      • heldMinorMinorUnitsrequired
      • returnedMinorMinorUnitsrequired
      • lostMinorMinorUnitsrequired
      • feeMinorMinorUnitsrequired
    • orderStatusOrderStatusrequired
    • isTestbooleanrequired
    • actionsDisputeActionsrequired
    • buyerBlockedbooleanrequired

    Example

    curl -X PUT "https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk/evidence" \
      -H "Authorization: Bearer $SHOPFAST_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
      "text": {}
    }'
    const res = await fetch('https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk/evidence', {
      method: 'PUT',
      headers: {
        Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        "text": {}
      }),
    });
    if (!res.ok) throw new Error((await res.json()).detail);
    const data = await res.json();
    import os, requests
    
    res = requests.request(
        "PUT",
        "https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk/evidence",
        headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
        json={
          "text": {}
        },
    )
    res.raise_for_status()
    data = res.json()
    req, _ := http.NewRequest("PUT", "https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk/evidence", strings.NewReader(`{
      "text": {}
    }`))
    req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
    req.Header.Set("Content-Type", "application/json")
    res, err := http.DefaultClient.Do(req)
    Try it with your key

    Use a test key on a development store. The key stays in this tab (sessionStorage) and is sent only to the base URL above.

    Send the evidence package to the processor

    POST/v1/store/disputes/{disputeId}/submit

    Or name the store: POST /v1/stores/{storeId}/disputes/{disputeId}/submit

    orders:writesubmitDisputeEvidence

    Parameters

    • disputeIddsp_…pathrequired

    Response DisputeDetail

    • idDisputeIdrequired
    • kindDisputeKindrequired
    • sourceDisputeSourcerequired
    • statusDisputeStatusrequired
    • reasonDisputeReasonrequired
    • orderIdOrderIdrequired
    • orderNumberstringrequired
    • customerIdCustomerId | nullrequired
    • customerNamestringrequired
    • customerEmailstringrequired
    18 more fields
    • amountMinorMinorUnitsrequired
    • feeMinorMinorUnitsrequired
    • currencyCurrencyCoderequired
    • providerGatewayProviderrequired
    • providerDisputeIdstringrequired
    • dueAtTimestamp | nullrequired
    • resolutionClaimResolution | nullrequired
    • openedAtTimestamprequired
    • closedAtTimestamp | nullrequired
    • stageDisputeStage | nullrequired
    • buyerMessagestringrequired
    • evidenceDisputeEvidencerequired
    • eventsDisputeEvent[]required
    • ledgerobjectrequired
      • heldMinorMinorUnitsrequired
      • returnedMinorMinorUnitsrequired
      • lostMinorMinorUnitsrequired
      • feeMinorMinorUnitsrequired
    • orderStatusOrderStatusrequired
    • isTestbooleanrequired
    • actionsDisputeActionsrequired
    • buyerBlockedbooleanrequired

    Example

    curl -X POST "https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk/submit" \
      -H "Authorization: Bearer $SHOPFAST_API_KEY"
    const res = await fetch('https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk/submit', {
      method: 'POST',
      headers: {
        Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
      },
    });
    if (!res.ok) throw new Error((await res.json()).detail);
    const data = await res.json();
    import os, requests
    
    res = requests.request(
        "POST",
        "https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk/submit",
        headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
    )
    res.raise_for_status()
    data = res.json()
    req, _ := http.NewRequest("POST", "https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk/submit", nil)
    req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
    res, err := http.DefaultClient.Do(req)
    Try it with your key

    Use a test key on a development store. The key stays in this tab (sessionStorage) and is sent only to the base URL above.

    Accept a chargeback (counts as lost)

    POST/v1/store/disputes/{disputeId}/accept

    Or name the store: POST /v1/stores/{storeId}/disputes/{disputeId}/accept

    orders:writeacceptDispute

    Parameters

    • disputeIddsp_…pathrequired

    Response DisputeDetail

    • idDisputeIdrequired
    • kindDisputeKindrequired
    • sourceDisputeSourcerequired
    • statusDisputeStatusrequired
    • reasonDisputeReasonrequired
    • orderIdOrderIdrequired
    • orderNumberstringrequired
    • customerIdCustomerId | nullrequired
    • customerNamestringrequired
    • customerEmailstringrequired
    18 more fields
    • amountMinorMinorUnitsrequired
    • feeMinorMinorUnitsrequired
    • currencyCurrencyCoderequired
    • providerGatewayProviderrequired
    • providerDisputeIdstringrequired
    • dueAtTimestamp | nullrequired
    • resolutionClaimResolution | nullrequired
    • openedAtTimestamprequired
    • closedAtTimestamp | nullrequired
    • stageDisputeStage | nullrequired
    • buyerMessagestringrequired
    • evidenceDisputeEvidencerequired
    • eventsDisputeEvent[]required
    • ledgerobjectrequired
      • heldMinorMinorUnitsrequired
      • returnedMinorMinorUnitsrequired
      • lostMinorMinorUnitsrequired
      • feeMinorMinorUnitsrequired
    • orderStatusOrderStatusrequired
    • isTestbooleanrequired
    • actionsDisputeActionsrequired
    • buyerBlockedbooleanrequired

    Example

    curl -X POST "https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk/accept" \
      -H "Authorization: Bearer $SHOPFAST_API_KEY"
    const res = await fetch('https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk/accept', {
      method: 'POST',
      headers: {
        Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
      },
    });
    if (!res.ok) throw new Error((await res.json()).detail);
    const data = await res.json();
    import os, requests
    
    res = requests.request(
        "POST",
        "https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk/accept",
        headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
    )
    res.raise_for_status()
    data = res.json()
    req, _ := http.NewRequest("POST", "https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk/accept", nil)
    req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
    res, err := http.DefaultClient.Do(req)
    Try it with your key

    Use a test key on a development store. The key stays in this tab (sessionStorage) and is sent only to the base URL above.

    Reply to the buyer of a claim (emailed) or add a private note

    POST/v1/store/disputes/{disputeId}/reply

    Or name the store: POST /v1/stores/{storeId}/disputes/{disputeId}/reply

    orders:writereplyDispute

    Parameters

    • disputeIddsp_…pathrequired

    Body

    • bodystringrequired
    • internalboolean

    Response DisputeDetail

    • idDisputeIdrequired
    • kindDisputeKindrequired
    • sourceDisputeSourcerequired
    • statusDisputeStatusrequired
    • reasonDisputeReasonrequired
    • orderIdOrderIdrequired
    • orderNumberstringrequired
    • customerIdCustomerId | nullrequired
    • customerNamestringrequired
    • customerEmailstringrequired
    18 more fields
    • amountMinorMinorUnitsrequired
    • feeMinorMinorUnitsrequired
    • currencyCurrencyCoderequired
    • providerGatewayProviderrequired
    • providerDisputeIdstringrequired
    • dueAtTimestamp | nullrequired
    • resolutionClaimResolution | nullrequired
    • openedAtTimestamprequired
    • closedAtTimestamp | nullrequired
    • stageDisputeStage | nullrequired
    • buyerMessagestringrequired
    • evidenceDisputeEvidencerequired
    • eventsDisputeEvent[]required
    • ledgerobjectrequired
      • heldMinorMinorUnitsrequired
      • returnedMinorMinorUnitsrequired
      • lostMinorMinorUnitsrequired
      • feeMinorMinorUnitsrequired
    • orderStatusOrderStatusrequired
    • isTestbooleanrequired
    • actionsDisputeActionsrequired
    • buyerBlockedbooleanrequired

    Example

    curl -X POST "https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk/reply" \
      -H "Authorization: Bearer $SHOPFAST_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
      "body": "string",
      "internal": false
    }'
    const res = await fetch('https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk/reply', {
      method: 'POST',
      headers: {
        Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        "body": "string",
        "internal": false
      }),
    });
    if (!res.ok) throw new Error((await res.json()).detail);
    const data = await res.json();
    import os, requests
    
    res = requests.request(
        "POST",
        "https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk/reply",
        headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
        json={
          "body": "string",
          "internal": False
        },
    )
    res.raise_for_status()
    data = res.json()
    req, _ := http.NewRequest("POST", "https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk/reply", strings.NewReader(`{
      "body": "string",
      "internal": false
    }`))
    req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
    req.Header.Set("Content-Type", "application/json")
    res, err := http.DefaultClient.Do(req)
    Try it with your key

    Use a test key on a development store. The key stays in this tab (sessionStorage) and is sent only to the base URL above.

    Close a claim: refund, replace or reject

    POST/v1/store/disputes/{disputeId}/resolve

    Or name the store: POST /v1/stores/{storeId}/disputes/{disputeId}/resolve

    orders:writeresolveClaim

    Parameters

    • disputeIddsp_…pathrequired

    Body

    • resolution"refunded" | "replaced" | "rejected" | "withdrawn"required
    • notestring

    Response DisputeDetail

    • idDisputeIdrequired
    • kindDisputeKindrequired
    • sourceDisputeSourcerequired
    • statusDisputeStatusrequired
    • reasonDisputeReasonrequired
    • orderIdOrderIdrequired
    • orderNumberstringrequired
    • customerIdCustomerId | nullrequired
    • customerNamestringrequired
    • customerEmailstringrequired
    18 more fields
    • amountMinorMinorUnitsrequired
    • feeMinorMinorUnitsrequired
    • currencyCurrencyCoderequired
    • providerGatewayProviderrequired
    • providerDisputeIdstringrequired
    • dueAtTimestamp | nullrequired
    • resolutionClaimResolution | nullrequired
    • openedAtTimestamprequired
    • closedAtTimestamp | nullrequired
    • stageDisputeStage | nullrequired
    • buyerMessagestringrequired
    • evidenceDisputeEvidencerequired
    • eventsDisputeEvent[]required
    • ledgerobjectrequired
      • heldMinorMinorUnitsrequired
      • returnedMinorMinorUnitsrequired
      • lostMinorMinorUnitsrequired
      • feeMinorMinorUnitsrequired
    • orderStatusOrderStatusrequired
    • isTestbooleanrequired
    • actionsDisputeActionsrequired
    • buyerBlockedbooleanrequired

    Example

    curl -X POST "https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk/resolve" \
      -H "Authorization: Bearer $SHOPFAST_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
      "resolution": "refunded",
      "note": ""
    }'
    const res = await fetch('https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk/resolve', {
      method: 'POST',
      headers: {
        Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        "resolution": "refunded",
        "note": ""
      }),
    });
    if (!res.ok) throw new Error((await res.json()).detail);
    const data = await res.json();
    import os, requests
    
    res = requests.request(
        "POST",
        "https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk/resolve",
        headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
        json={
          "resolution": "refunded",
          "note": ""
        },
    )
    res.raise_for_status()
    data = res.json()
    req, _ := http.NewRequest("POST", "https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk/resolve", strings.NewReader(`{
      "resolution": "refunded",
      "note": ""
    }`))
    req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
    req.Header.Set("Content-Type", "application/json")
    res, err := http.DefaultClient.Do(req)
    Try it with your key

    Use a test key on a development store. The key stays in this tab (sessionStorage) and is sent only to the base URL above.

    Sandbox disputes only: the processor decides the dispute

    POST/v1/store/disputes/{disputeId}/simulate-outcome

    Or name the store: POST /v1/stores/{storeId}/disputes/{disputeId}/simulate-outcome

    orders:writesimulateDisputeOutcome

    Parameters

    • disputeIddsp_…pathrequired

    Body

    • outcome"won" | "lost"required

    Response DisputeDetail

    • idDisputeIdrequired
    • kindDisputeKindrequired
    • sourceDisputeSourcerequired
    • statusDisputeStatusrequired
    • reasonDisputeReasonrequired
    • orderIdOrderIdrequired
    • orderNumberstringrequired
    • customerIdCustomerId | nullrequired
    • customerNamestringrequired
    • customerEmailstringrequired
    18 more fields
    • amountMinorMinorUnitsrequired
    • feeMinorMinorUnitsrequired
    • currencyCurrencyCoderequired
    • providerGatewayProviderrequired
    • providerDisputeIdstringrequired
    • dueAtTimestamp | nullrequired
    • resolutionClaimResolution | nullrequired
    • openedAtTimestamprequired
    • closedAtTimestamp | nullrequired
    • stageDisputeStage | nullrequired
    • buyerMessagestringrequired
    • evidenceDisputeEvidencerequired
    • eventsDisputeEvent[]required
    • ledgerobjectrequired
      • heldMinorMinorUnitsrequired
      • returnedMinorMinorUnitsrequired
      • lostMinorMinorUnitsrequired
      • feeMinorMinorUnitsrequired
    • orderStatusOrderStatusrequired
    • isTestbooleanrequired
    • actionsDisputeActionsrequired
    • buyerBlockedbooleanrequired

    Example

    curl -X POST "https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk/simulate-outcome" \
      -H "Authorization: Bearer $SHOPFAST_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
      "outcome": "won"
    }'
    const res = await fetch('https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk/simulate-outcome', {
      method: 'POST',
      headers: {
        Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        "outcome": "won"
      }),
    });
    if (!res.ok) throw new Error((await res.json()).detail);
    const data = await res.json();
    import os, requests
    
    res = requests.request(
        "POST",
        "https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk/simulate-outcome",
        headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
        json={
          "outcome": "won"
        },
    )
    res.raise_for_status()
    data = res.json()
    req, _ := http.NewRequest("POST", "https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk/simulate-outcome", strings.NewReader(`{
      "outcome": "won"
    }`))
    req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
    req.Header.Set("Content-Type", "application/json")
    res, err := http.DefaultClient.Do(req)
    Try it with your key

    Use a test key on a development store. The key stays in this tab (sessionStorage) and is sent only to the base URL above.

    Ask PayPal to decide an inquiry; it becomes a claim

    POST/v1/store/disputes/{disputeId}/escalate

    Or name the store: POST /v1/stores/{storeId}/disputes/{disputeId}/escalate

    orders:writerole: disputes:writeescalateDispute

    Parameters

    • disputeIddsp_…pathrequired

    Body

    • notestringrequired

    Response DisputeDetail

    • idDisputeIdrequired
    • kindDisputeKindrequired
    • sourceDisputeSourcerequired
    • statusDisputeStatusrequired
    • reasonDisputeReasonrequired
    • orderIdOrderIdrequired
    • orderNumberstringrequired
    • customerIdCustomerId | nullrequired
    • customerNamestringrequired
    • customerEmailstringrequired
    18 more fields
    • amountMinorMinorUnitsrequired
    • feeMinorMinorUnitsrequired
    • currencyCurrencyCoderequired
    • providerGatewayProviderrequired
    • providerDisputeIdstringrequired
    • dueAtTimestamp | nullrequired
    • resolutionClaimResolution | nullrequired
    • openedAtTimestamprequired
    • closedAtTimestamp | nullrequired
    • stageDisputeStage | nullrequired
    • buyerMessagestringrequired
    • evidenceDisputeEvidencerequired
    • eventsDisputeEvent[]required
    • ledgerobjectrequired
      • heldMinorMinorUnitsrequired
      • returnedMinorMinorUnitsrequired
      • lostMinorMinorUnitsrequired
      • feeMinorMinorUnitsrequired
    • orderStatusOrderStatusrequired
    • isTestbooleanrequired
    • actionsDisputeActionsrequired
    • buyerBlockedbooleanrequired

    Example

    curl -X POST "https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk/escalate" \
      -H "Authorization: Bearer $SHOPFAST_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
      "note": "string"
    }'
    const res = await fetch('https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk/escalate', {
      method: 'POST',
      headers: {
        Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        "note": "string"
      }),
    });
    if (!res.ok) throw new Error((await res.json()).detail);
    const data = await res.json();
    import os, requests
    
    res = requests.request(
        "POST",
        "https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk/escalate",
        headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
        json={
          "note": "string"
        },
    )
    res.raise_for_status()
    data = res.json()
    req, _ := http.NewRequest("POST", "https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk/escalate", strings.NewReader(`{
      "note": "string"
    }`))
    req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
    req.Header.Set("Content-Type", "application/json")
    res, err := http.DefaultClient.Do(req)
    Try it with your key

    Use a test key on a development store. The key stays in this tab (sessionStorage) and is sent only to the base URL above.

    Pull the case, its stage and its messages from PayPal again

    POST/v1/store/disputes/{disputeId}/refresh

    Or name the store: POST /v1/stores/{storeId}/disputes/{disputeId}/refresh

    orders:writerole: disputes:writerefreshDispute

    Parameters

    • disputeIddsp_…pathrequired

    Response DisputeDetail

    • idDisputeIdrequired
    • kindDisputeKindrequired
    • sourceDisputeSourcerequired
    • statusDisputeStatusrequired
    • reasonDisputeReasonrequired
    • orderIdOrderIdrequired
    • orderNumberstringrequired
    • customerIdCustomerId | nullrequired
    • customerNamestringrequired
    • customerEmailstringrequired
    18 more fields
    • amountMinorMinorUnitsrequired
    • feeMinorMinorUnitsrequired
    • currencyCurrencyCoderequired
    • providerGatewayProviderrequired
    • providerDisputeIdstringrequired
    • dueAtTimestamp | nullrequired
    • resolutionClaimResolution | nullrequired
    • openedAtTimestamprequired
    • closedAtTimestamp | nullrequired
    • stageDisputeStage | nullrequired
    • buyerMessagestringrequired
    • evidenceDisputeEvidencerequired
    • eventsDisputeEvent[]required
    • ledgerobjectrequired
      • heldMinorMinorUnitsrequired
      • returnedMinorMinorUnitsrequired
      • lostMinorMinorUnitsrequired
      • feeMinorMinorUnitsrequired
    • orderStatusOrderStatusrequired
    • isTestbooleanrequired
    • actionsDisputeActionsrequired
    • buyerBlockedbooleanrequired

    Example

    curl -X POST "https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk/refresh" \
      -H "Authorization: Bearer $SHOPFAST_API_KEY"
    const res = await fetch('https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk/refresh', {
      method: 'POST',
      headers: {
        Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
      },
    });
    if (!res.ok) throw new Error((await res.json()).detail);
    const data = await res.json();
    import os, requests
    
    res = requests.request(
        "POST",
        "https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk/refresh",
        headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
    )
    res.raise_for_status()
    data = res.json()
    req, _ := http.NewRequest("POST", "https://api.shopfa.st/v1/store/disputes/dsp_0123456789abcdefghjk/refresh", nil)
    req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
    res, err := http.DefaultClient.Do(req)
    Try it with your key

    Use a test key on a development store. The key stays in this tab (sessionStorage) and is sent only to the base URL above.

    Was this page helpful?