curl --request POST \
--url https://api.arcuserp.com/v1/packages/{id}/recharge-label \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"action": "recharge",
"payment_method_id": "pm_1AbcD2eF3G4HiJkL5mNoPqR6",
"notes": "Customer requested overnight upgrade for birthday delivery"
}
'import requests
url = "https://api.arcuserp.com/v1/packages/{id}/recharge-label"
payload = {
"action": "recharge",
"payment_method_id": "pm_1AbcD2eF3G4HiJkL5mNoPqR6",
"notes": "Customer requested overnight upgrade for birthday delivery"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
action: 'recharge',
payment_method_id: 'pm_1AbcD2eF3G4HiJkL5mNoPqR6',
notes: 'Customer requested overnight upgrade for birthday delivery'
})
};
fetch('https://api.arcuserp.com/v1/packages/{id}/recharge-label', 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.arcuserp.com/v1/packages/{id}/recharge-label",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'action' => 'recharge',
'payment_method_id' => 'pm_1AbcD2eF3G4HiJkL5mNoPqR6',
'notes' => 'Customer requested overnight upgrade for birthday delivery'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.arcuserp.com/v1/packages/{id}/recharge-label"
payload := strings.NewReader("{\n \"action\": \"recharge\",\n \"payment_method_id\": \"pm_1AbcD2eF3G4HiJkL5mNoPqR6\",\n \"notes\": \"Customer requested overnight upgrade for birthday delivery\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.arcuserp.com/v1/packages/{id}/recharge-label")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"action\": \"recharge\",\n \"payment_method_id\": \"pm_1AbcD2eF3G4HiJkL5mNoPqR6\",\n \"notes\": \"Customer requested overnight upgrade for birthday delivery\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arcuserp.com/v1/packages/{id}/recharge-label")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"action\": \"recharge\",\n \"payment_method_id\": \"pm_1AbcD2eF3G4HiJkL5mNoPqR6\",\n \"notes\": \"Customer requested overnight upgrade for birthday delivery\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"delta": 123,
"action": "recharge",
"shipping_total_updated": true,
"gl_je_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"charge_status": "charged",
"charge_payment_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"order_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"label_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"idempotent": true
}
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}Adjust a package's shipping cost
Settles the shipping cost difference after a package’s label is re-rated to a different service level: recharge charges the customer’s saved card and posts a revenue journal entry, absorb logs the cost with no accounting change, and manual flags it for offline handling. Idempotent per label: a repeat call returns the existing result, and a declined card still leaves the recorded delta in place with charge_status: declined in the response.
curl --request POST \
--url https://api.arcuserp.com/v1/packages/{id}/recharge-label \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"action": "recharge",
"payment_method_id": "pm_1AbcD2eF3G4HiJkL5mNoPqR6",
"notes": "Customer requested overnight upgrade for birthday delivery"
}
'import requests
url = "https://api.arcuserp.com/v1/packages/{id}/recharge-label"
payload = {
"action": "recharge",
"payment_method_id": "pm_1AbcD2eF3G4HiJkL5mNoPqR6",
"notes": "Customer requested overnight upgrade for birthday delivery"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
action: 'recharge',
payment_method_id: 'pm_1AbcD2eF3G4HiJkL5mNoPqR6',
notes: 'Customer requested overnight upgrade for birthday delivery'
})
};
fetch('https://api.arcuserp.com/v1/packages/{id}/recharge-label', 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.arcuserp.com/v1/packages/{id}/recharge-label",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'action' => 'recharge',
'payment_method_id' => 'pm_1AbcD2eF3G4HiJkL5mNoPqR6',
'notes' => 'Customer requested overnight upgrade for birthday delivery'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.arcuserp.com/v1/packages/{id}/recharge-label"
payload := strings.NewReader("{\n \"action\": \"recharge\",\n \"payment_method_id\": \"pm_1AbcD2eF3G4HiJkL5mNoPqR6\",\n \"notes\": \"Customer requested overnight upgrade for birthday delivery\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.arcuserp.com/v1/packages/{id}/recharge-label")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"action\": \"recharge\",\n \"payment_method_id\": \"pm_1AbcD2eF3G4HiJkL5mNoPqR6\",\n \"notes\": \"Customer requested overnight upgrade for birthday delivery\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arcuserp.com/v1/packages/{id}/recharge-label")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"action\": \"recharge\",\n \"payment_method_id\": \"pm_1AbcD2eF3G4HiJkL5mNoPqR6\",\n \"notes\": \"Customer requested overnight upgrade for birthday delivery\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"delta": 123,
"action": "recharge",
"shipping_total_updated": true,
"gl_je_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"charge_status": "charged",
"charge_payment_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"order_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"label_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"idempotent": true
}
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}Authorizations
API key issued per entity via Settings > Developers > API Keys.
Each key carries scopes (e.g. orders:read, products:write).
Bearer token format: Authorization: Bearer ark_live_ent_Test keys use ark_test_ent_. Both are issued per entity
via Settings > Developers > API Keys.
Headers
Client-generated unique key for idempotent POST/PATCH/DELETE operations. Alias for the Idempotency parameter. Max 255 chars. On retry with the same key, the original response is returned without re-executing the operation. Keys expire after 24 hours.
255Path Parameters
Body
What to do with the cost delta. recharge bills the
customer (requires payment_method_id for in-API Stripe
charge). absorb logs but does not move money. manual
flags for offline handling.
recharge, absorb, manual Optional explicit label id. When omitted, the active (non-voided) label on the package is used.
Saved Stripe payment method to charge for the delta. Only
honored when action='recharge' and the carrier cost
exceeds what the customer was charged. Soft-fails on
decline.
When true (default) and action='recharge', updates
orders.shipping_total to match the new carrier cost
and re-flows totals via recalculateOrderTotals.
Optional human note recorded on the activity log entry and (for the recharge branch) on the Stripe charge description.
Response
Delta processed
Show child attributes
Show child attributes
Was this page helpful?

