In this article
You can use this Snap to generate refund transactions for an order.
Support for Ultra Pipelines
Works in Ultra Pipelines.
- API versions: Shopify releases new API versions every quarter. Each stable version is supported only for a minimum of 12 months. Part of a Shopify API is deprecated if it becomes unnecessary, unsafe, or outdated. The API’s are marked as deprecated when they are removed in a newer version of the API. The deprecation is then retroactively applied to previous stable versions of the API.
API Rate Limit: All Shopify APIs are rate-limited. Shopify uses various strategies to enforce rate limits, such as Calculated query cost, Request-based limit, and Time-based limit.
Shopify Snap Pack uses admin APIs, which are applicable for Request-based limit. If the APIs cross the rate limit, the Snap fails.
- Order discount is applied for invalid discount codes also. The discount percentage or amount is allotted more than percentage/amount set for valid discount code. For example, summer20 is a valid discount code, which should apply 20% of discount. However, if we provide discount percentage as 50%, then it applies 50% discount ignoring the set discount percentage.
- If you provide an invalid value for Transaction ID or Parent ID, the Snap is not validated. The Snap ignores the invalid values and processes the operation.
Snap Input and Output
|Input/Output||Type of View||Number of Views||Examples of Upstream and Downstream Snaps||Description|
The order details, such as time of order creation, order ID, order note, amount, and currency code.
- Get Order
- Order Refund
- Group By N
Retrieves a specific refund.
|Field Name||Field Dependency||Description|
Specify the name for the Snap. You can modify the default name to be specific and meaningful, especially if you have more than one of the same Snap in your Pipeline.
Default Value: Calculate Order Refund
Specify the Shopify API version. Alternatively, click the Suggestion icon to fetch the list of supported Shopify API versions and select a version.
|Order Id*||N/A||Specify a unique identifier for the order.|
Default Value: N/A
|Number Of Retries||N/A|
Specify an integer value to set the maximum number of reconnection attempts that the Snap must perform, in case of connection failure or timeout.
Default Value: 1
|Retry Interval (Seconds)||N/A|
Specify the duration in seconds for which the Snap must wait between two reconnection attempts, until the number of retries is reached.
Default Value: 1
Select one of the three modes in which the Snap executes. Available options are:
Default Value: Execute only
Example: Validate & Execute
"402 Payment Required"
|The requested shop is currently frozen. ||You need to log in as admin user and pay the outstanding balance to unfreeze the shop.|
"404 Not Found"
|The requested resource is not found.||The resource could be available again in the future.|
"406 Not Acceptable"
|The requested resource is only capable of generating content, but not acceptable according to the Accept headers sent in the request.||N/A|
|This is an intermittent error that you can encounter when there is a conflict in your orders, products, or customer data. For example, when you use unsupported characters.||Check for the conflicts in your metadata and rerun the Pipeline.|
"422 Unprocessable Entity"
The request body was well-formed but contains semantic errors. You can encounter a
422 error from a variety of scenarios including, but not limited to:
Formatting of the input is incorrect.
Checking out products that are out of stock.
Canceling an order that has fulfillments.
Creating an order with tax lines on both line items and the order.
Creating a customer without an email or name
Creating a product without a title.
|The response body provides details in the errors or error parameters. Fix the error parameters as given in the error description.|
"422 empty entity error"
|You might be sending null or empty or unsupported data. ||Check the data and fix the null or empty data.|
The requested shop is currently locked. Shops are locked if they repeatedly exceed their API request limit, or if there is an issue with the account, such as a detected compromise or fraud risk.
Wait for Shopify to unlock your account after the specified amount of time, after which you should be able to continue working on your Pipeline, or contact support if your shop is locked.
"429 Too Many Requests"
|Shopify APIs use different API rate-limiting methods. If the APIs exceeds the rate limit, the Snap fails.||See the API Call Limit documentation for a breakdown of Shopify's rate-limiting mechanism.|
"500 Internal Server Error"
|An internal error in Shopify application causes this error. ||Post the error details to the API and Technology forum so that Shopify staff can investigate the issue.|
"501 Not Implemented"
|The requested endpoint is not available on that particular shop, for example, requesting access to a Plus-specific API on a non-Plus shop. This response may also indicate that this endpoint is reserved for future use.||N/A|
"504 Gateway Timeout"
|The request could not complete in time. Shopify waits up to 10 seconds for a response.||Break down the request in multiple smaller requests.|
Calculating Refund For An Order
This example Pipeline demonstrates how to calculate refund for an order and subsequently create an Order Refund using the Calculate Order Refund and Create Order Refund Snaps.
First, we pass the following customer and order data using the JSON Generator Snap.
Upon validation, we see the following data in the output preview of the Snap.
Next, we configure the Create Order Snap to create an order. On validation, the Snap creates an order.
|Create Order Snap Configuration||Output|
Next, we configure the first Mapper Snap to map the ID against the Order Id column.
Upon validation, the Snap generates the following data in the output preview of the Snap.
Next, we configure the JSON Splitter Snap to split each item in the line items into separate documents. We specify the $line_items for Json Path and $order_id (path of the object) for Include Path to include in the output.
Upon validation, we see the value for each line item in the order separately.
Next, we configure the second Mapper Snap to map the following attributes in the line item.
Upon validation, the Snap generates the line item data as configured.
Next, we use the Group by Fields Snap to group the line items by Order ID. However, we are only interested in refund line items; hence, we specify refund_line_items in the Target field. Upon validation we see the list of items grouped under refund_line_items object.
|Group By Fields Snap Configuration||Output|
Next, we use the Mapper Snap to pass the refund line items output from the upstream Snap to calculate order refund subsequently.
Upon validation, the Snap generates the refund order data as follows.
Next, we configure the Calculate Order Refund Snap to calculate the refund for the order.
Upon validation, the Snap generates the status of the refund (full refund in this case) and other details, such as quantity, line_item_id, orderId, and location_id.
Next, we use the fourth and the last Mapper Snap in our Pipeline to pass the details as highlighted below to use the Snap's output in the downstream Snap for creating an order refund.
We configure the Create Order Refund Snap to create a refund for the order.
Upon validation, the Snap generates a refund for the order and we can view the related refund data in the output preview of the Snap.
We further use the JSON formatter Snap to format the JSON file, and write the document on to SL database using the File Writer Snap.
Download this Pipeline.
Snap Pack History