Reputation: 6053
I am trying to cancel and refund an order using this endpoint:
https://help.shopify.com/en/api/reference/orders/order#cancel
With the following payload:
{"refund": {
"shipping": {"full_refund": true},
"refund_line_items": [{
"quantity": 1,
"line_item_id": 2032498606169,
"price": "39.90",
"subtotal": "39.90",
"total_tax": "6.37",
"discounted_total_price": "39.90",
"total_cart_discount_amount": "0.00",
"location_id": null,
"restock_type": "no_restock",
"discounted_price": "39.90"
}],
"transactions": [{
"amount": "39.90",
"maximum_refundable": "39.90",
"kind": "refund",
"parent_id": 1147873263705,
"currency": "EUR",
"order_id": 922997620825,
"gateway": "amazon_payments"
}],
"notify": true
}}
The order has just this one article, so I am basically refunding the entirety of this order.
However, this REST API call returns success, but when I go check the order's page, I do see indeed that the order was cancelled, but there was no refund after all.
And the order status displays "Canceled", "Paid", "Unfulfilled". So I end up having to refund it manually.
Why is my REST call just cancelling this order, but not proceeding with the refunding?
Thanks!
Upvotes: 0
Views: 1363
Reputation: 15447
You have the wrong reference. From your reference the cancel post should be:
POST /admin/api/2019-04/orders/#{order_id}/cancel.json {} // post an empty object -- not null
The Refund api at https://help.shopify.com/en/api/reference/orders/refund#create shows a slightly different POST body than what you supplied. You don't need any of the price info in your refund_line_item.
Have you verified the parent_id in the refund is a sale
or capture
transaction and that the gateway type matches.
Upvotes: 1