curl --request GET \
--url https://api.loopreturns.com/api/2026-10/draft-returns/{draft_return_id}/totals \
--header 'X-Authorization: <api-key>'import requests
url = "https://api.loopreturns.com/api/2026-10/draft-returns/{draft_return_id}/totals"
headers = {"X-Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Authorization': '<api-key>'}};
fetch('https://api.loopreturns.com/api/2026-10/draft-returns/{draft_return_id}/totals', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.loopreturns.com/api/2026-10/draft-returns/{draft_return_id}/totals",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.loopreturns.com/api/2026-10/draft-returns/{draft_return_id}/totals"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Authorization", "<api-key>")
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.loopreturns.com/api/2026-10/draft-returns/{draft_return_id}/totals")
.header("X-Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.loopreturns.com/api/2026-10/draft-returns/{draft_return_id}/totals")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"_links": {
"self": {
"href": "<string>"
}
},
"data": {
"return_total": {
"amount": 123,
"currencyCode": "<string>"
},
"new_item_total": {
"amount": 123,
"currencyCode": "<string>"
},
"total_bonus_offered": {
"amount": 123,
"currencyCode": "<string>"
},
"bonus_used": {
"amount": 123,
"currencyCode": "<string>"
},
"fees": {
"applied": {
"amount": 123,
"currencyCode": "<string>"
},
"refund": {
"amount": 123,
"currencyCode": "<string>"
},
"credit": {
"amount": 123,
"currencyCode": "<string>"
},
"exchange": {
"amount": 123,
"currencyCode": "<string>"
}
},
"amount_due": {
"amount": 123,
"currencyCode": "<string>"
},
"credit": {
"amount": 123,
"currencyCode": "<string>"
},
"net": {
"amount": 123,
"currencyCode": "<string>"
},
"returning_item_subtotal": {
"amount": 123,
"currencyCode": "<string>"
},
"returning_item_tax": {
"amount": 123,
"currencyCode": "<string>"
},
"purchasing_item_tax": {
"amount": 123,
"currencyCode": "<string>"
},
"settings": {
"stripe_min": 123
},
"is_difference_covered": false,
"qualifies_for_return_coverage": false,
"new_item_prices": [
{
"order_line_item_id": 11,
"variant_id": "9999",
"price": 800
},
{
"order_line_item_id": null,
"variant_id": "1234567890123456789",
"price": 900
}
]
}
}{
"errors": [
{
"code": "unauthorized",
"message": "Unauthorized."
}
]
}Get Draft Return Totals
Returns the computed monetary totals for the draft return. Money values are objects with
an integer amount in minor units and a currencyCode.
curl --request GET \
--url https://api.loopreturns.com/api/2026-10/draft-returns/{draft_return_id}/totals \
--header 'X-Authorization: <api-key>'import requests
url = "https://api.loopreturns.com/api/2026-10/draft-returns/{draft_return_id}/totals"
headers = {"X-Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Authorization': '<api-key>'}};
fetch('https://api.loopreturns.com/api/2026-10/draft-returns/{draft_return_id}/totals', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.loopreturns.com/api/2026-10/draft-returns/{draft_return_id}/totals",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.loopreturns.com/api/2026-10/draft-returns/{draft_return_id}/totals"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Authorization", "<api-key>")
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.loopreturns.com/api/2026-10/draft-returns/{draft_return_id}/totals")
.header("X-Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.loopreturns.com/api/2026-10/draft-returns/{draft_return_id}/totals")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"_links": {
"self": {
"href": "<string>"
}
},
"data": {
"return_total": {
"amount": 123,
"currencyCode": "<string>"
},
"new_item_total": {
"amount": 123,
"currencyCode": "<string>"
},
"total_bonus_offered": {
"amount": 123,
"currencyCode": "<string>"
},
"bonus_used": {
"amount": 123,
"currencyCode": "<string>"
},
"fees": {
"applied": {
"amount": 123,
"currencyCode": "<string>"
},
"refund": {
"amount": 123,
"currencyCode": "<string>"
},
"credit": {
"amount": 123,
"currencyCode": "<string>"
},
"exchange": {
"amount": 123,
"currencyCode": "<string>"
}
},
"amount_due": {
"amount": 123,
"currencyCode": "<string>"
},
"credit": {
"amount": 123,
"currencyCode": "<string>"
},
"net": {
"amount": 123,
"currencyCode": "<string>"
},
"returning_item_subtotal": {
"amount": 123,
"currencyCode": "<string>"
},
"returning_item_tax": {
"amount": 123,
"currencyCode": "<string>"
},
"purchasing_item_tax": {
"amount": 123,
"currencyCode": "<string>"
},
"settings": {
"stripe_min": 123
},
"is_difference_covered": false,
"qualifies_for_return_coverage": false,
"new_item_prices": [
{
"order_line_item_id": 11,
"variant_id": "9999",
"price": 800
},
{
"order_line_item_id": null,
"variant_id": "1234567890123456789",
"price": 900
}
]
}
}{
"errors": [
{
"code": "unauthorized",
"message": "Unauthorized."
}
]
}Authorizations
Headers
The unique identifier of the shop associated with the draft return.
This header is not required, as the merchant's shop is identified by the API key present in the request.
Optional. Responses use Content-Type: application/prs.hal-forms+json. Ignored on 2026-10
and later. On earlier versions, send it to receive HAL-Forms, and it is required for
GET /draft-returns (List).
application/prs.hal-forms+json Shopper-portal only. The shopper_token from a shopper-portal draft response.
Required on shopper-portal requests that include a draft return id.
A missing, empty, or non-matching value returns 404.
Merchant public API requests ignore this header.
Path Parameters
The unique identifier of the draft return.