You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/apps/guides/dispute-service.md
+60-6Lines changed: 60 additions & 6 deletions
Original file line number
Diff line number
Diff line change
@@ -4,6 +4,10 @@ sidebar_position: 1
4
4
tags:
5
5
- Guide
6
6
---
7
+
```mdx-code-block
8
+
import Tabs from '@theme/Tabs';
9
+
import TabItem from '@theme/TabItem';
10
+
```
7
11
8
12
Dispute service apps are integrations that manage the processing of payment disputes (alerts and chargebacks) on behalf of merchants seamlessly within the platform.
9
13
@@ -31,7 +35,8 @@ sequenceDiagram
31
35
Dispute Service->>Store: Creates dispute (alert or chargeback) in store
32
36
Dispute Service->>Store: Matches dispute to store transaction
33
37
Store-->>Customer: Customer is added to block lists
@@ -84,7 +89,12 @@ Merchants can configure their store to automatically add customers to block list
84
89
Depending on the type of dispute, the dispute service may need to create a refund using the [transactionsRefundCreate](/docs/api/admin/reference/#/operations/transactionsRefundCreate) Admin API to resolve the dispute. See [Create a Refund](#creating-disputes) detail below.
85
90
86
91
87
-
#### Step 8 - Dispute service resolves dispute
92
+
#### Step 8 - Cancel Order / Cancel Fulfillment
93
+
94
+
If the order is not yet fulfilled, it may be ideal to cancel the order or cancel fulfillment to stop the order from being shipped to the customer. See [Canceling Fulfillment](#canceling-fulfillment) detail below.
95
+
96
+
97
+
#### Step 9 - Dispute service resolves dispute
88
98
89
99
Once the dispute is resolved, the dispute service should set the dispute resolution using the [disputesUpdate](/docs/api/admin/reference/#/operations/disputesUpdate) Admin API. See [Dispute Resolutions](#dispute-resolutions) and [Resolve a Dispute](#resolving-disputes) detail below.
90
100
@@ -94,7 +104,7 @@ Once the dispute is resolved, the dispute service should set the dispute resolut
94
104
To create a dispute in the store using the [disputesCreate](/docs/api/admin/reference/#/operations/disputesCreate) Admin API, see example below:
95
105
96
106
```json title="Create dispute"
97
-
POST https://{store}.29next.store/api/admin/disputes/
107
+
// POST https://{store}.29next.store/api/admin/disputes/
98
108
{
99
109
"type": "alert", // dispute type
100
110
"arn": "string", // optional
@@ -121,20 +131,62 @@ PUT https://{store}.29next.store/api/admin/disputes/{id}/
121
131
To create a refund for a transaction as part of the dispute resolution process, you can use the [transactionsRefundCreate](/docs/api/admin/reference/#/operations/transactionsRefundCreate) Admin API.
122
132
123
133
```json title="Create a Refund"
124
-
POST https://{store}.29next.store/api/admin/transactions/{id}/refund/
134
+
// POST https://{store}.29next.store/api/admin/transactions/{id}/refund/
125
135
{
126
136
"amount": "XX.XX", // refund amount
127
137
}
128
138
```
129
139
140
+
### Canceling Fulfillment
141
+
142
+
It's desirable to cancel fulfillment for orders that have not shipped yet when they are disputed to prevent additional losses for the merchant.
143
+
144
+
:::info
145
+
To retrieve a list of all fulfillment orders and their status, use the [ordersFulfillmentOrdersRetrieve](/docs/api/admin/reference/?v=2024-04-01#/operations/ordersFulfillmentOrdersRetrieve) endpoint.
146
+
:::
147
+
148
+
<Tabs>
149
+
<TabItemvalue="fulfillment_status-unfulfilled"label="Fulfillment Status - Unfulfilled">
150
+
151
+
If order `fulfilmlent_status` is `unfulfilled`, your dispute service can stop fulfillment using the [fulfillmentOrdersHold](/docs/api/admin/reference/?v=2024-04-01#/operations/fulfillmentOrdersHold) endpoint.
"reason_message": "Order disputed by customer."// Use a relevant other reason message
160
+
}
161
+
```
162
+
163
+
</TabItem>
164
+
<TabItemvalue="fulfillment_status-processing"label="Fulifllment Status - Processing">
165
+
166
+
If order `fulfilmlent_status` is `processing` your dispute service can request processing fulfillment orders be canceled with the fulfillment locations with the [cancellationRequestSend](/docs/api/admin/reference/#/operations/cancellationRequestSend?v=2024-04-01) endpoint.
167
+
168
+
```json title="Request Fulfillment Cancel"
169
+
// POST https://{store}.29next.store/api/admin/orders/{number}/cancel/
170
+
{
171
+
"message": "Order disputed by customer"// Fulfillment cancel reason
172
+
}
173
+
```
174
+
175
+
:::caution
176
+
Fulfillment locations need to accept the cancelation request to confirm they were able to stop fulfillment on their end at. It is possible that the fulfillment order was already shipped and the fulfillment could not be stopped.
177
+
:::
178
+
179
+
</TabItem>
180
+
</Tabs>
181
+
130
182
### RDR Alerts
131
183
132
184
RDR Alerts are automatically refunded with the gateway, dispute services should log an external refund for the transaction using the [transactionsRefundCreate](/docs/api/admin/reference/#/operations/transactionsRefundCreate) Admin API.
133
185
134
186
Setting `is_external: true` on a refund will create the refund without attempting the refund with the gateway.
135
187
136
188
```json title="Create an External Refund"
137
-
POST https://{store}.29next.store/api/admin/transactions/{id}/refund/
189
+
// POST https://{store}.29next.store/api/admin/transactions/{id}/refund/
138
190
{
139
191
"amount": "XX.XX", // refund amount
140
192
"is_external": true// set for external refunds
@@ -166,9 +218,11 @@ POST https://{store}.29next.store/api/admin/transactions/{id}/refund/
166
218
To resolve a dispute, update the dispute with the appropriate [resolution](#dispute-resolutions) for the dispute type.
167
219
168
220
```json title="Resolve a dispute"
169
-
POST https://{store}.29next.store/api/admin/disputes/{id}/
221
+
// POST https://{store}.29next.store/api/admin/disputes/{id}/
0 commit comments