Create, rate, label, cancel and confirm your shipments
Quick security check
Check the box so we know it’s really you.
Protected by Cloudflare. This keeps bots from creating fake accounts.
Shop curated products from WeShipYou sellers, fulfilled end-to-end with our shipping guarantee.
Shop on Amazon, the world's largest store with the widest range of products, all with the security of WeShipYou!
New and used items from US sellers: we buy Buy It Now listings for you.
Millions of products at factory prices, bought and shipped by us.
Shop pharmacy and grocery products at Walmart quickly and easily!
Shop the latest trending products at the best discounted prices, only at the Shein store!
Shop the best products at discounted prices at the Temu store!
Search thousands of US Shopify stores at once, or paste a link from any of them.
Receiving, storage, same-day pick & pack, multi-carrier shipping and returns — handled by us.
Compare and select the shipping service based on your interest fast and easy
Shopify app, public API and more — plug WeShipYou into your store.
API Access for developers
Automatic monthly invoices, branded PDFs and one-click payments.
Create, rate, label, cancel and confirm your shipments
A shipment: what is sent, from whom, to whom, and its label and delivery status.
uidstringrequiredShipment UID. Use it as shipmentId.
statestringrequiredLifecycle state, from created through label_created to delivered or cancelled.
statusTrackingstringnullableLatest carrier tracking status, in words.
transactionStatestringnullableBilling state of the shipment, when it was charged or refunded.
externalReferenceCodestringnullableYour own reference for the shipment.
externalCustomerIdstringnullableYour own customer reference.
externalUniqueIdstringnullableYour own idempotency reference.
incotermsstringrequiredWho pays duties: the recipient (DDU) or the sender (DDP).
DDUDDPweightUnitstringrequiredUnit of weight.
gmkgozlbdimUnitstringrequiredUnit of length, width and height.
weightnumbernullableTotal weight.
lengthnumbernullableLength of the box.
widthnumbernullableWidth of the box.
heightnumbernullableHeight of the box.
totalValuenumbernullableDeclared value of the contents, USD.
insuranceboolean | integerThe shipment is insured. 1/true or 0/false.
insuranceAmountnumbernullableInsured amount, USD.
appliedCouponDiscountnumbernullableCoupon discount applied to the label price, USD.
sellerNotesstringnullableNotes from the sender.
buyerNotesstringnullableNotes from the recipient.
labelCreatedAtstring <date-time>nullableWhen the label was bought.
deliveredAtstring <date-time>nullableWhen the carrier delivered the shipment.
cancellationReasonstringnullableWhy the shipment was cancelled.
cancellationReasonCodestringnullableMachine code of the cancellation reason.
customsAuthorizationsobjectCustoms documents the destination requires, and whether the customer can still edit them.
senderobjectnullableThe sender. Included when the shipment is read on its own.
uidstringAddress book entry UID.
nicknamestringnullableYour label for the entry.
companyNamestringnullableCompany name.
namestringnullableFull name.
taxIdstringnullableTax ID.
emailstringnullableEmail address.
phonestringnullablePhone number.
isResidentialboolean | integerResidential delivery address.
statusstringEntry status.
addressobjectnullableA postal address as WeShipYou parsed it.
uidstringAddress UID.
houseNumberstringnullableHouse or building number.
roadstringnullableStreet name.
unitstringnullableApartment, suite or unit.
cityobjectnullablenamestringCity name.
stateobjectnullablenamestringisoCodestringnullableState code.
countryobjectnullableisoCodestringnamestringpostal_codeobjectnullablepostalCodestringrecipientobjectnullableThe recipient. Included when the shipment is read on its own.
uidstringAddress book entry UID.
nicknamestringnullableYour label for the entry.
companyNamestringnullableCompany name.
namestringnullableFull name.
taxIdstringnullableTax ID.
emailstringnullableEmail address.
phonestringnullablePhone number.
isResidentialboolean | integerResidential delivery address.
statusstringEntry status.
addressobjectnullableA postal address as WeShipYou parsed it.
uidstringAddress UID.
houseNumberstringnullableHouse or building number.
roadstringnullableStreet name.
unitstringnullableApartment, suite or unit.
cityobjectnullablenamestringCity name.
stateobjectnullablenamestringisoCodestringnullableState code.
countryobjectnullableisoCodestringnamestringpostal_codeobjectnullablepostalCodestringparcelsarray of objectThe parcels and their items. Included when the shipment is read on its own.
parcel_ratesarray of RateThe services this shipment can be sent with and their prices. Included in the answer of POST /shipments and PATCH /shipments/{shipmentId}; pick one and buy it with POST /shipments/labels. Their totalChargePrice includes insurance (insuranceFee) even when the shipment is not insured; see the Rate object.
uidstringrequiredThe rate id. Send it as rateId to POST /shipments/labels.
serviceobjectThe shipping service.
uidstringnullableThe service uid.
namestringnullableThe service name.
umbrellaNamestringnullableThe carrier or brand the service belongs to.
serviceTypestringnullableground, air or sea.
totalChargePricenumberThe quoted price. Includes insuranceFee whether or not the shipment is insured, and improvedFoamProtectionFee. Subtract insuranceFee when the shipment is not insured.
insuranceFeenumberThe price of insuring the shipment with this service. It is already inside totalChargePrice; it is charged only when the shipment is insured.
improvedFoamProtectionFeenumberThe price of improved foam protection, already inside totalChargePrice. 0 unless the shipment asks for it.
shipmentChargeTotalPricenumberThe price of the shipping service alone; coupon discounts are calculated on it. It is not what the label costs: see totalChargePrice.
pickupFeenumberAdded to the label price when the parcels are picked up.
minimumPickupFeenumberAdded to the label price when the parcels are picked up.
labelobjectnullableThe label, once it is bought. Included when the shipment is read on its own (GET /shipments/{shipmentId}).
trackingNumberstringnullableThe WeShipYou tracking number (WSY…). Use it with GET /tracking/{trackingNumber} and to cancel the label.
createdAtstring <date-time>requiredWhen the shipment was created.
updatedAtstring <date-time>requiredWhen the shipment last changed.
{
"uid": "wwbvygom0rlz",
"state": "created",
"statusTracking": "in transit",
"transactionState": null,
"externalReferenceCode": "shp1x6",
"externalCustomerId": null,
"externalUniqueId": null,
"incoterms": "DDU",
"weightUnit": "gm",
"dimUnit": "cm",
"weight": 1000,
"length": 10,
"width": 10,
"height": 10,
"totalValue": 10,
"insurance": 0,
"insuranceAmount": null,
"appliedCouponDiscount": 0,
"sellerNotes": null,
"buyerNotes": null,
"labelCreatedAt": null,
"deliveredAt": null,
"cancellationReason": null,
"cancellationReasonCode": null,
"customsAuthorizations": {
"required": [],
"mincomDocumentsCount": 0,
"canCustomerEdit": true,
"recipientAuthorization": "optional",
"recipientAuthorizationDocumentsCount": 0,
"canCustomerEditRecipientAuthorization": true
},
"createdAt": "2026-11-01T00:37:50.000Z",
"updatedAt": "2026-11-01T00:37:50.000Z"
}A shipment content category. Each parcel item declares one.
uidstringrequiredCategory UID.
namestringrequiredDisplay name.
slugstringrequiredStable machine name.
weightnumbernullableDefault weight for one unit, in grams.
lengthnumbernullableDefault length, in centimeters.
widthnumbernullableDefault width, in centimeters.
heightnumbernullableDefault height, in centimeters.
containsDocumentsboolean | integerItems in this category are documents. 1/true or 0/false.
containsOtherDgboolean | integerItems in this category are dangerous goods other than batteries. 1/true or 0/false.
containsLiquidsboolean | integerItems in this category contain liquids. 1/true or 0/false.
containsBatteryPi967boolean | integerLithium-ion batteries contained in equipment (PI 967). 1/true or 0/false.
containsBatteryPi966boolean | integerLithium-ion batteries packed with equipment (PI 966). 1/true or 0/false.
containsBatteryPi965boolean | integerLithium-ion batteries on their own (PI 965). 1/true or 0/false.
parentIdintegernullableParent category, when this is a sub-category.
{
"uid": "u40h56jccmdi",
"name": "Phone Accessory (no battery)",
"slug": "accessory_no_battery",
"weight": null,
"length": null,
"width": null,
"height": null,
"containsDocuments": 0,
"containsOtherDg": 0,
"containsLiquids": 0,
"containsBatteryPi967": 0,
"containsBatteryPi966": 0,
"containsBatteryPi965": 0,
"parentId": null
}uidstringnullablenamestringnullableslugstringnullableweightnumbernullablelengthnumbernullablewidthnumbernullableheightnumbernullablecontainsDocumentsbooleannullablecontainsOtherDgbooleannullablecontainsLiquidsbooleannullablecontainsBatteryPi967booleannullablecontainsBatteryPi966booleannullablecontainsBatteryPi965booleannullablecustomsValuenumbernullableqtynumbernullablemaxWeightnumbernullableunitTypestringnullableobservationsstringnullableisDiscontinuedbooleannullablecreatedAtstring <date-time>nullableupdatedAtstring <date-time>nullableparentIdnumbernullableA service the shipment can be sent with, and its price in USD.
totalChargePrice always includes the insurance price (insuranceFee), even when the shipment is not insured. Shipments are not insured unless you ask (insurance: true), so in most cases subtract insuranceFee to get what the label costs:
totalChargePrice − insuranceFee when the shipment is not insured, or totalChargePrice when it is;pickupFee and minimumPickupFee when the parcels are picked up (handoverOption: "pickup" in POST /shipments/labels).A coupon lowers that price further.
uidstringThe rate id. Send it as rateId to POST /shipments/labels.
serviceobjectThe shipping service.
uidstringnullableThe service uid.
namestringnullableThe service name.
umbrellaNamestringnullableThe carrier or brand the service belongs to.
serviceTypestringnullableground, air or sea.
totalChargePricenumberThe quoted price. Includes insuranceFee whether or not the shipment is insured, and improvedFoamProtectionFee. Subtract insuranceFee when the shipment is not insured.
insuranceFeenumberThe price of insuring the shipment with this service. It is already inside totalChargePrice; it is charged only when the shipment is insured.
improvedFoamProtectionFeenumberThe price of improved foam protection, already inside totalChargePrice. 0 unless the shipment asks for it.
shipmentChargeTotalPricenumberThe price of the shipping service alone; coupon discounts are calculated on it. It is not what the label costs: see totalChargePrice.
pickupFeenumberAdded to the label price when the parcels are picked up.
minimumPickupFeenumberAdded to the label price when the parcels are picked up.
{
"uid": "k3m9x2p7q1zt",
"service": {
"uid": "q8c2kd0x1m4z",
"name": "USPS Priority Mail",
"umbrellaName": "USPS",
"serviceType": "ground"
},
"totalChargePrice": 20.75,
"insuranceFee": 2.35,
"improvedFoamProtectionFee": 0,
"shipmentChargeTotalPrice": 18.4,
"pickupFee": 0,
"minimumPickupFee": 0
}Quotes every service available for a shipment. Send the shipment as you would create it; accountId is optional. To quote packages that are already in your locker, send each item’s uid from GET /forwarder as forwardingOrderItemId on a parcel item (the From locker items example).
Every rate’s totalChargePrice includes insurance (insuranceFee), even when you do not ask for it. If the shipment will not be insured (the default), subtract insuranceFee to get the price of its label.
Accept-LanguagestringTwo-letter code of the language for messages: en, es or pt.
en-USThe shipment to create.
accountIdstringrequiredYour account uid, as returned by POST /authentication.
Your account number (CU…).
totalValuenumberrequiredinsurancebooleanInsure the shipment. Defaults to false. Rates always include the insurance price (insuranceFee) in totalChargePrice; it is charged only when this is true.
incotermsstringrequiredDDUDDPweightUnitstringUnit of weight for every parcel that does not set its own weightUnit. With no unit on the parcel or here, weights are read as grams.
gmkgozlbdimUnitstringUnit of length, width and height for every parcel that does not set its own dimUnit. With no unit on the parcel or here, sizes are read as centimeters.
cminsenderobjectrequiredaddressobjectrequiredcityobjectnamestringstateobjectnamestringstreetstringStreet address, including the building or apartment number.
postalCodestringcountryobjectrequiredA country, by its ISO 3166-1 alpha-2 code.
isoCodestringADAEAFALAGAIAQAMAOARASATAUAWAXAZBABBBDBEBFBGBHBIBJBLBMBNBOBQBRBSBTBVBWBYBZCACCCDCFCGCHCICKCLCMCNCOCRCUCVCWCXCYCZDEDJDKDMDODZECEEEGEHERESETFIFJFKFMFOFRGAGBGDGEGFGGGHGIGLGMGNGPGQGRGSGTGUGWGYHKHMHNHRHTIDIEILIMINIOIQIRISITJEJMJOJPKEKGKHKIKMKNKPKRXKKWKYKZLALBLCLILKLRLSLTLULVLYMAMCMDMEMFMGMHMKMLMMHUMNMOMPMQMRMSMTMUMVMWMXMYMZNANCNENFNGNINLNONPNRNUNZOMPAPEPFPGPHPKPLPMPNPRPSPTPWPYQARERORSRURWSASBSCSDSSSESGSHSISJSKSLSMSNSOSRSTSVSXSYSZTCTDTFTGTHTJTKTLTMTNTOTRTTTVTWTZUAUGUMUSUYUZVAVCVEVGVIVNVUWFWSYTYEZAZMZWCSANrecipientobjectrequiredaddressobjectrequiredcityobjectnamestringstateobjectnamestringstreetstringStreet address, including the building or apartment number.
postalCodestringcountryobjectrequiredA country, by its ISO 3166-1 alpha-2 code.
isoCodestringADAEAFALAGAIAQAMAOARASATAUAWAXAZBABBBDBEBFBGBHBIBJBLBMBNBOBQBRBSBTBVBWBYBZCACCCDCFCGCHCICKCLCMCNCOCRCUCVCWCXCYCZDEDJDKDMDODZECEEEGEHERESETFIFJFKFMFOFRGAGBGDGEGFGGGHGIGLGMGNGPGQGRGSGTGUGWGYHKHMHNHRHTIDIEILIMINIOIQIRISITJEJMJOJPKEKGKHKIKMKNKPKRXKKWKYKZLALBLCLILKLRLSLTLULVLYMAMCMDMEMFMGMHMKMLMMHUMNMOMPMQMRMSMTMUMVMWMXMYMZNANCNENFNGNINLNONPNRNUNZOMPAPEPFPGPHPKPLPMPNPRPSPTPWPYQARERORSRURWSASBSCSDSSSESGSHSISJSKSLSMSNSOSRSTSVSXSYSZTCTDTFTGTHTJTKTLTMTNTOTRTTTVTWTZUAUGUMUSUYUZVAVCVEVGVIVNVUWFWSYTYEZAZMZWCSANparcelsarray of objectrequireddimUnitstringrequiredUnit of length, width and height.
cminwidthnumberrequiredlengthnumberrequiredheightnumberrequiredweightUnitstringrequiredUnit of weight.
gmkgozlbgmweightnumberrequiredparcel_itemsarray of objectrequiredskustringforwardingOrderItemIdstringShips a package that is already in your locker: the uid of the forwarding order item, as listed by GET /forwarder. The item must belong to the shipment’s account. Its weight and quantity, and its declared value when it has one, are read from the locker, and the parcel’s dimensions are recalculated from its weight. An unknown uid, or an item of another account, is a 400.
descriptionstringrequiredcategoryobjectrequiredslugstringrequiredpricenumberrequiredqtynumberrequiredoriginCountryobjectisoCodestringweightnumbercurrencystring | CurrencyrequiredCurrency of the item value: an ISO 4217 code, or a currency object.
namestringrequiredcodestringrequiredprefixstringrequiredThe available rates. Each totalChargePrice includes insurance (insuranceFee); see the Rate object.
Invalid parcels, or an unknown forwardingOrderItemId
namestringBadRequestmessagestringcodenumber400classNamestringbad-requestdataobjectMissing or invalid access token
namestringNotAuthenticatedmessagestringcodenumber401classNamestringnot-authenticateddataobjectcurl -X POST 'https://sandbox.weshipyou.com/api/v1/shipments/rates' \
-H "Authorization: Bearer $WSY_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"accountId": "CU1234567",
"totalValue": 2999,
"insurance": true,
"incoterms": "DDU",
"sender": {
"address": {
"city": {
"name": "Homestead",
"state": {
"name": "Florida"
}
},
"street": "924 NW 36 Ave",
"postalCode": "33033"
},
"country": {
"isoCode": "US"
}
},
"recipient": {
"address": {
"city": {
"name": "Homestead",
"state": {
"name": "Florida"
}
},
"street": "924 NW 36 Ave",
"postalCode": "33033"
},
"country": {
"isoCode": "US"
}
},
"parcels": [
{
"dimUnit": "cm",
"width": 10,
"length": 10,
"height": 10,
"weightUnit": "gm",
"weight": 100,
"parcel_items": [
{
"sku": "SKU-WSY-EXAMPLE",
"description": "Play Station 4",
"category": {
"slug": "board_games"
},
"price": 450,
"qty": 1,
"originCountry": {
"isoCode": "JP"
},
"weight": 2.5,
"currency": "USD"
}
]
}
]
}'{
"accountId": "CU1234567",
"totalValue": 2999,
"insurance": true,
"incoterms": "DDU",
"sender": {
"address": {
"city": {
"name": "Homestead",
"state": {
"name": "Florida"
}
},
"street": "924 NW 36 Ave",
"postalCode": "33033"
},
"country": {
"isoCode": "US"
}
},
"recipient": {
"address": {
"city": {
"name": "Homestead",
"state": {
"name": "Florida"
}
},
"street": "924 NW 36 Ave",
"postalCode": "33033"
},
"country": {
"isoCode": "US"
}
},
"parcels": [
{
"dimUnit": "cm",
"width": 10,
"length": 10,
"height": 10,
"weightUnit": "gm",
"weight": 100,
"parcel_items": [
{
"sku": "SKU-WSY-EXAMPLE",
"description": "Play Station 4",
"category": {
"slug": "board_games"
},
"price": 450,
"qty": 1,
"originCountry": {
"isoCode": "JP"
},
"weight": 2.5,
"currency": "USD"
}
]
}
]
}[
{
"uid": "k3m9x2p7q1zt",
"service": {
"uid": "q8c2kd0x1m4z",
"name": "USPS Priority Mail",
"umbrellaName": "USPS",
"serviceType": "ground"
},
"totalChargePrice": 20.75,
"insuranceFee": 2.35,
"improvedFoamProtectionFee": 0,
"shipmentChargeTotalPrice": 18.4,
"pickupFee": 0,
"minimumPickupFee": 0
}
]Lists the shipments of your accounts.
accountIdstringLimit the results to one of your accounts or one of their sub-accounts: its uid, its account number (CU…) or its external account number. Without it, the accounts you belong to and their sub-accounts are all included.
$limitnumberMaximum number of results (default 20).
20$skipnumberNumber of results to skip, for paging.
0Accept-LanguagestringTwo-letter code of the language for messages: en, es or pt.
en-USA page of your shipments.
totalintegerrequiredTotal number of matching records.
limitintegerrequiredPage size used for this response.
skipintegerrequiredNumber of records skipped before this page.
dataarray of ShipmentrequiredMissing or invalid access token
namestringNotAuthenticatedmessagestringcodenumber401classNamestringnot-authenticateddataobjectYou do not have access to this account
namestringForbiddenmessagestringcodenumber403classNamestringforbiddendataobjectcurl 'https://sandbox.weshipyou.com/api/v1/shipments' \
-H "Authorization: Bearer $WSY_ACCESS_TOKEN"{
"total": 1,
"limit": 20,
"skip": 0,
"data": [
{
"uid": "wwbvygom0rlz",
"state": "created",
"statusTracking": "in transit",
"transactionState": null,
"externalReferenceCode": "shp1x6",
"externalCustomerId": null,
"externalUniqueId": null,
"incoterms": "DDU",
"weightUnit": "gm",
"dimUnit": "cm",
"weight": 1000,
"length": 10,
"width": 10,
"height": 10,
"totalValue": 10,
"insurance": 0,
"insuranceAmount": null,
"appliedCouponDiscount": 0,
"sellerNotes": null,
"buyerNotes": null,
"labelCreatedAt": null,
"deliveredAt": null,
"cancellationReason": null,
"cancellationReasonCode": null,
"customsAuthorizations": {
"required": [],
"mincomDocumentsCount": 0,
"canCustomerEdit": true,
"recipientAuthorization": "optional",
"recipientAuthorizationDocumentsCount": 0,
"canCustomerEditRecipientAuthorization": true
},
"createdAt": "2026-11-01T00:37:50.000Z",
"updatedAt": "2026-11-01T00:37:50.000Z"
}
]
}Creates a shipment (no label yet). accountId accepts the account uid, its account number (CU…) or its external account number. Rate it with POST /shipments/rates and buy the label with POST /shipments/labels.
To ship packages that are already in your locker, list them with GET /forwarder and send each item’s uid as forwardingOrderItemId on a parcel item (the From locker items example).
Accept-LanguagestringTwo-letter code of the language for messages: en, es or pt.
en-USThe shipment to create.
accountIdstring | integerrequiredYour account uid, as returned by POST /authentication, or the uid of one of its sub-accounts (GET /accounts) to ship for that sub-account.
Your account number (CU…).
senderobjectrequireduseExistingAddressbooleanrequireduseExistingAddressbooleanfalsenicknamestringnullableaddressobjectrequiredcityobjectnamestringnullablestateobjectnamestringnullablestreetstringStreet address, including the building or apartment number.
postalCodestringnamestringrequirednullablecompanyNamestringnullabletaxIdstringnullabletaxIdCountryobjectA country, by its ISO 3166-1 alpha-2 code.
isoCodestringADAEAFALAGAIAQAMAOARASATAUAWAXAZBABBBDBEBFBGBHBIBJBLBMBNBOBQBRBSBTBVBWBYBZCACCCDCFCGCHCICKCLCMCNCOCRCUCVCWCXCYCZDEDJDKDMDODZECEEEGEHERESETFIFJFKFMFOFRGAGBGDGEGFGGGHGIGLGMGNGPGQGRGSGTGUGWGYHKHMHNHRHTIDIEILIMINIOIQIRISITJEJMJOJPKEKGKHKIKMKNKPKRXKKWKYKZLALBLCLILKLRLSLTLULVLYMAMCMDMEMFMGMHMKMLMMHUMNMOMPMQMRMSMTMUMVMWMXMYMZNANCNENFNGNINLNONPNRNUNZOMPAPEPFPGPHPKPLPMPNPRPSPTPWPYQARERORSRURWSASBSCSDSSSESGSHSISJSKSLSMSNSOSRSTSVSXSYSZTCTDTFTGTHTJTKTLTMTNTOTRTTTVTWTZUAUGUMUSUYUZVAVCVEVGVIVNVUWFWSYTYEZAZMZWCSANphonestring <phone>requirednullableemailstring <email>requirednullableRecipient email address
countryobjectrequiredA country, by its ISO 3166-1 alpha-2 code.
isoCodestringADAEAFALAGAIAQAMAOARASATAUAWAXAZBABBBDBEBFBGBHBIBJBLBMBNBOBQBRBSBTBVBWBYBZCACCCDCFCGCHCICKCLCMCNCOCRCUCVCWCXCYCZDEDJDKDMDODZECEEEGEHERESETFIFJFKFMFOFRGAGBGDGEGFGGGHGIGLGMGNGPGQGRGSGTGUGWGYHKHMHNHRHTIDIEILIMINIOIQIRISITJEJMJOJPKEKGKHKIKMKNKPKRXKKWKYKZLALBLCLILKLRLSLTLULVLYMAMCMDMEMFMGMHMKMLMMHUMNMOMPMQMRMSMTMUMVMWMXMYMZNANCNENFNGNINLNONPNRNUNZOMPAPEPFPGPHPKPLPMPNPRPSPTPWPYQARERORSRURWSASBSCSDSSSESGSHSISJSKSLSMSNSOSRSTSVSXSYSZTCTDTFTGTHTJTKTLTMTNTOTRTTTVTWTZUAUGUMUSUYUZVAVCVEVGVIVNVUWFWSYTYEZAZMZWCSANuseExistingAddressbooleanaddressobjectrequiredidnumber <int64>Address ID
recipientobjectrequireduseExistingAddressbooleanrequireduseExistingAddressbooleanfalsenicknamestringnullableaddressobjectrequiredcityobjectnamestringnullablestateobjectnamestringnullablestreetstringStreet address, including the building or apartment number.
postalCodestringnamestringrequirednullablecompanyNamestringnullabletaxIdstringnullabletaxIdCountryobjectA country, by its ISO 3166-1 alpha-2 code.
isoCodestringADAEAFALAGAIAQAMAOARASATAUAWAXAZBABBBDBEBFBGBHBIBJBLBMBNBOBQBRBSBTBVBWBYBZCACCCDCFCGCHCICKCLCMCNCOCRCUCVCWCXCYCZDEDJDKDMDODZECEEEGEHERESETFIFJFKFMFOFRGAGBGDGEGFGGGHGIGLGMGNGPGQGRGSGTGUGWGYHKHMHNHRHTIDIEILIMINIOIQIRISITJEJMJOJPKEKGKHKIKMKNKPKRXKKWKYKZLALBLCLILKLRLSLTLULVLYMAMCMDMEMFMGMHMKMLMMHUMNMOMPMQMRMSMTMUMVMWMXMYMZNANCNENFNGNINLNONPNRNUNZOMPAPEPFPGPHPKPLPMPNPRPSPTPWPYQARERORSRURWSASBSCSDSSSESGSHSISJSKSLSMSNSOSRSTSVSXSYSZTCTDTFTGTHTJTKTLTMTNTOTRTTTVTWTZUAUGUMUSUYUZVAVCVEVGVIVNVUWFWSYTYEZAZMZWCSANphonestring <phone>requirednullableemailstring <email>requirednullableRecipient email address
countryobjectrequiredA country, by its ISO 3166-1 alpha-2 code.
isoCodestringADAEAFALAGAIAQAMAOARASATAUAWAXAZBABBBDBEBFBGBHBIBJBLBMBNBOBQBRBSBTBVBWBYBZCACCCDCFCGCHCICKCLCMCNCOCRCUCVCWCXCYCZDEDJDKDMDODZECEEEGEHERESETFIFJFKFMFOFRGAGBGDGEGFGGGHGIGLGMGNGPGQGRGSGTGUGWGYHKHMHNHRHTIDIEILIMINIOIQIRISITJEJMJOJPKEKGKHKIKMKNKPKRXKKWKYKZLALBLCLILKLRLSLTLULVLYMAMCMDMEMFMGMHMKMLMMHUMNMOMPMQMRMSMTMUMVMWMXMYMZNANCNENFNGNINLNONPNRNUNZOMPAPEPFPGPHPKPLPMPNPRPSPTPWPYQARERORSRURWSASBSCSDSSSESGSHSISJSKSLSMSNSOSRSTSVSXSYSZTCTDTFTGTHTJTKTLTMTNTOTRTTTVTWTZUAUGUMUSUYUZVAVCVEVGVIVNVUWFWSYTYEZAZMZWCSANuseExistingAddressbooleanaddressobjectrequiredidnumber <int64>Address ID
totalValuenumberrequiredexternalReferenceCodestringexternalCustomerIdstringnullableinsuranceboolean | integerInsure the shipment. Defaults to false. Rates always include the insurance price (insuranceFee) in totalChargePrice; it is charged only when this is true.
incotermsstringrequiredDDUDDPweightUnitstringUnit of weight for every parcel that does not set its own weightUnit. Saved on the shipment, and the dashboard shows the shipment’s weight in it. Defaults to the first parcel’s weightUnit.
gmkgozlbdimUnitstringUnit of length, width and height for every parcel that does not set its own dimUnit. Saved on the shipment. Defaults to the first parcel’s dimUnit.
cminparcelsarray of objectrequireddimUnitstringrequiredUnit of length, width and height.
cminwidthnumberrequiredlengthnumberrequiredheightnumberrequiredweightUnitstringrequiredUnit of weight.
gmkgozlbgmweightnumberrequiredparcel_itemsarray of objectrequiredskustringforwardingOrderItemIdstringShips a package that is already in your locker: the uid of the forwarding order item, as listed by GET /forwarder. The item must belong to the shipment’s account. Its weight and quantity, and its declared value when it has one, are read from the locker, and the parcel’s dimensions are recalculated from its weight. An unknown uid, or an item of another account, is a 400.
descriptionstringrequiredcategoryobjectrequiredslugstringrequiredpricenumberrequiredqtynumberrequiredoriginCountryobjectisoCodestringweightnumbercurrencystring | CurrencyrequiredCurrency of the item value: an ISO 4217 code, or a currency object.
namestringrequiredcodestringrequiredprefixstringrequiredThe created shipment
Validation error; data holds the message for each invalid field
namestringBadRequestmessagestringcodenumber400classNamestringbad-requestdataobjectMissing or invalid access token
namestringNotAuthenticatedmessagestringcodenumber401classNamestringnot-authenticateddataobjectYou do not have access to this account
namestringForbiddenmessagestringcodenumber403classNamestringforbiddendataobjectcurl -X POST 'https://sandbox.weshipyou.com/api/v1/shipments' \
-H "Authorization: Bearer $WSY_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"accountId": "CU1234567",
"sender": {
"useExistingAddress": false,
"nickname": "Main office",
"address": {
"city": {
"name": "Homestead",
"state": {
"name": "Florida"
}
},
"street": "924 NW 36 Ave",
"postalCode": "33033"
},
"name": "John Doe",
"companyName": "We Ship You Corp",
"taxId": "88-1345985",
"taxIdCountry": {
"isoCode": "US"
},
"phone": "+1 (786) 651-0451",
"email": "john.doe@weshipyou.com",
"country": {
"isoCode": "US"
}
},
"recipient": {
"useExistingAddress": false,
"nickname": "Main office",
"address": {
"city": {
"name": "Homestead",
"state": {
"name": "Florida"
}
},
"street": "924 NW 36 Ave",
"postalCode": "33033"
},
"name": "John Doe",
"companyName": "We Ship You Corp",
"taxId": "88-1345985",
"taxIdCountry": {
"isoCode": "US"
},
"phone": "+1 (786) 651-0451",
"email": "john.doe@weshipyou.com",
"country": {
"isoCode": "US"
}
},
"totalValue": 2999,
"externalReferenceCode": "ORDER-1001",
"externalCustomerId": "CUST-42",
"insurance": true,
"incoterms": "DDU",
"parcels": [
{
"dimUnit": "cm",
"width": 10,
"length": 10,
"height": 10,
"weightUnit": "gm",
"weight": 100,
"parcel_items": [
{
"sku": "SKU-WSY-EXAMPLE",
"description": "Play Station 4",
"category": {
"slug": "board_games"
},
"price": 450,
"qty": 1,
"originCountry": {
"isoCode": "JP"
},
"weight": 2.5,
"currency": "USD"
}
]
}
]
}'{
"accountId": "CU1234567",
"sender": {
"useExistingAddress": false,
"nickname": "Main office",
"address": {
"city": {
"name": "Homestead",
"state": {
"name": "Florida"
}
},
"street": "924 NW 36 Ave",
"postalCode": "33033"
},
"name": "John Doe",
"companyName": "We Ship You Corp",
"taxId": "88-1345985",
"taxIdCountry": {
"isoCode": "US"
},
"phone": "+1 (786) 651-0451",
"email": "john.doe@weshipyou.com",
"country": {
"isoCode": "US"
}
},
"recipient": {
"useExistingAddress": false,
"nickname": "Main office",
"address": {
"city": {
"name": "Homestead",
"state": {
"name": "Florida"
}
},
"street": "924 NW 36 Ave",
"postalCode": "33033"
},
"name": "John Doe",
"companyName": "We Ship You Corp",
"taxId": "88-1345985",
"taxIdCountry": {
"isoCode": "US"
},
"phone": "+1 (786) 651-0451",
"email": "john.doe@weshipyou.com",
"country": {
"isoCode": "US"
}
},
"totalValue": 2999,
"externalReferenceCode": "ORDER-1001",
"externalCustomerId": "CUST-42",
"insurance": true,
"incoterms": "DDU",
"parcels": [
{
"dimUnit": "cm",
"width": 10,
"length": 10,
"height": 10,
"weightUnit": "gm",
"weight": 100,
"parcel_items": [
{
"sku": "SKU-WSY-EXAMPLE",
"description": "Play Station 4",
"category": {
"slug": "board_games"
},
"price": 450,
"qty": 1,
"originCountry": {
"isoCode": "JP"
},
"weight": 2.5,
"currency": "USD"
}
]
}
]
}{
"uid": "42ailx0umn2q",
"state": "created",
"statusTracking": "in transit",
"transactionState": null,
"externalReferenceCode": "ORDER-1001",
"externalCustomerId": "CUST-42",
"externalUniqueId": null,
"incoterms": "DDU",
"weightUnit": "gm",
"dimUnit": "cm",
"weight": 2.5,
"length": 10,
"width": 10,
"height": 10,
"totalValue": 450,
"insurance": true,
"insuranceAmount": null,
"sellerNotes": null,
"buyerNotes": null,
"labelCreatedAt": null,
"deliveredAt": null,
"cancellationReason": null,
"cancellationReasonCode": null,
"sender": {
"uid": "vbnk8892rbji",
"nickname": "Main office",
"companyName": "We Ship You Corp",
"name": "John Doe",
"taxId": "88-1345985",
"email": "john.doe@weshipyou.com",
"phone": "+1 (786) 651-0451",
"isResidential": false,
"status": "active",
"address": {
"uid": "e9j57zlvd0z8",
"houseNumber": "924",
"road": "nw 36 ave",
"unit": null,
"city": {
"name": "Homestead",
"state": {
"name": "Florida",
"isoCode": "FL",
"country": {
"isoCode": "US",
"name": "United States"
}
}
},
"postal_code": {
"postalCode": "33033"
}
}
},
"recipient": {
"uid": "vbnk8892rbji",
"nickname": "Main office",
"companyName": "We Ship You Corp",
"name": "John Doe",
"taxId": "88-1345985",
"email": "john.doe@weshipyou.com",
"phone": "+1 (786) 651-0451",
"isResidential": false,
"status": "active",
"address": {
"uid": "e9j57zlvd0z8",
"houseNumber": "924",
"road": "nw 36 ave",
"unit": null,
"city": {
"name": "Homestead",
"state": {
"name": "Florida",
"isoCode": "FL",
"country": {
"isoCode": "US",
"name": "United States"
}
}
},
"postal_code": {
"postalCode": "33033"
}
}
},
"createdAt": "2026-11-01T00:37:51.000Z",
"updatedAt": "2026-11-01T00:37:51.000Z"
}Returns one of your shipments.
shipmentIdstringrequiredThe shipment uid, or its WeShipYou tracking number (WSY…).
Accept-LanguagestringTwo-letter code of the language for messages: en, es or pt.
en-USThe shipment
Missing or invalid access token
namestringNotAuthenticatedmessagestringcodenumber401classNamestringnot-authenticateddataobjectNo shipment has that id
namestringNotFoundmessagestringcodenumber404classNamestringnot-founddataobjectcurl 'https://sandbox.weshipyou.com/api/v1/shipments/{shipmentId}' \
-H "Authorization: Bearer $WSY_ACCESS_TOKEN"{
"uid": "wwbvygom0rlz",
"state": "created",
"statusTracking": "in transit",
"transactionState": null,
"externalReferenceCode": "shp1x6",
"externalCustomerId": null,
"externalUniqueId": null,
"incoterms": "DDU",
"weightUnit": "gm",
"dimUnit": "cm",
"weight": 1000,
"length": 10,
"width": 10,
"height": 10,
"totalValue": 10,
"insurance": 0,
"insuranceAmount": null,
"appliedCouponDiscount": 0,
"sellerNotes": null,
"buyerNotes": null,
"labelCreatedAt": null,
"deliveredAt": null,
"cancellationReason": null,
"cancellationReasonCode": null,
"customsAuthorizations": {
"required": [],
"mincomDocumentsCount": 0,
"canCustomerEdit": true,
"recipientAuthorization": "optional",
"recipientAuthorizationDocumentsCount": 0,
"canCustomerEditRecipientAuthorization": true
},
"createdAt": "2026-11-01T00:37:50.000Z",
"updatedAt": "2026-11-01T00:37:50.000Z"
}Changes the fields you send and keeps every other field as it is. To change an address, send the whole sender or recipient object (or { "id": <address id>, "useExistingAddress": true } to use one from your address book); to change the contents, send the whole parcels array. Rates are recalculated after the change. A delivered shipment cannot be edited.
shipmentIdstringrequiredThe shipment uid, or its WeShipYou tracking number (WSY…).
Accept-LanguagestringTwo-letter code of the language for messages: en, es or pt.
en-USAny of the shipment fields.
accountIdstringYour account uid, as returned by POST /authentication.
Your account number (CU…).
senderobjectuseExistingAddressbooleanrequireduseExistingAddressbooleanfalsenicknamestringnullableaddressobjectrequiredcityobjectnamestringnullablestateobjectnamestringnullablestreetstringStreet address, including the building or apartment number.
postalCodestringnamestringrequirednullablecompanyNamestringnullabletaxIdstringnullabletaxIdCountryobjectA country, by its ISO 3166-1 alpha-2 code.
isoCodestringADAEAFALAGAIAQAMAOARASATAUAWAXAZBABBBDBEBFBGBHBIBJBLBMBNBOBQBRBSBTBVBWBYBZCACCCDCFCGCHCICKCLCMCNCOCRCUCVCWCXCYCZDEDJDKDMDODZECEEEGEHERESETFIFJFKFMFOFRGAGBGDGEGFGGGHGIGLGMGNGPGQGRGSGTGUGWGYHKHMHNHRHTIDIEILIMINIOIQIRISITJEJMJOJPKEKGKHKIKMKNKPKRXKKWKYKZLALBLCLILKLRLSLTLULVLYMAMCMDMEMFMGMHMKMLMMHUMNMOMPMQMRMSMTMUMVMWMXMYMZNANCNENFNGNINLNONPNRNUNZOMPAPEPFPGPHPKPLPMPNPRPSPTPWPYQARERORSRURWSASBSCSDSSSESGSHSISJSKSLSMSNSOSRSTSVSXSYSZTCTDTFTGTHTJTKTLTMTNTOTRTTTVTWTZUAUGUMUSUYUZVAVCVEVGVIVNVUWFWSYTYEZAZMZWCSANphonestring <phone>requirednullableemailstring <email>requirednullableRecipient email address
countryobjectrequiredA country, by its ISO 3166-1 alpha-2 code.
isoCodestringADAEAFALAGAIAQAMAOARASATAUAWAXAZBABBBDBEBFBGBHBIBJBLBMBNBOBQBRBSBTBVBWBYBZCACCCDCFCGCHCICKCLCMCNCOCRCUCVCWCXCYCZDEDJDKDMDODZECEEEGEHERESETFIFJFKFMFOFRGAGBGDGEGFGGGHGIGLGMGNGPGQGRGSGTGUGWGYHKHMHNHRHTIDIEILIMINIOIQIRISITJEJMJOJPKEKGKHKIKMKNKPKRXKKWKYKZLALBLCLILKLRLSLTLULVLYMAMCMDMEMFMGMHMKMLMMHUMNMOMPMQMRMSMTMUMVMWMXMYMZNANCNENFNGNINLNONPNRNUNZOMPAPEPFPGPHPKPLPMPNPRPSPTPWPYQARERORSRURWSASBSCSDSSSESGSHSISJSKSLSMSNSOSRSTSVSXSYSZTCTDTFTGTHTJTKTLTMTNTOTRTTTVTWTZUAUGUMUSUYUZVAVCVEVGVIVNVUWFWSYTYEZAZMZWCSANuseExistingAddressbooleanaddressobjectrequiredidnumber <int64>Address ID
recipientobjectuseExistingAddressbooleanrequireduseExistingAddressbooleanfalsenicknamestringnullableaddressobjectrequiredcityobjectnamestringnullablestateobjectnamestringnullablestreetstringStreet address, including the building or apartment number.
postalCodestringnamestringrequirednullablecompanyNamestringnullabletaxIdstringnullabletaxIdCountryobjectA country, by its ISO 3166-1 alpha-2 code.
isoCodestringADAEAFALAGAIAQAMAOARASATAUAWAXAZBABBBDBEBFBGBHBIBJBLBMBNBOBQBRBSBTBVBWBYBZCACCCDCFCGCHCICKCLCMCNCOCRCUCVCWCXCYCZDEDJDKDMDODZECEEEGEHERESETFIFJFKFMFOFRGAGBGDGEGFGGGHGIGLGMGNGPGQGRGSGTGUGWGYHKHMHNHRHTIDIEILIMINIOIQIRISITJEJMJOJPKEKGKHKIKMKNKPKRXKKWKYKZLALBLCLILKLRLSLTLULVLYMAMCMDMEMFMGMHMKMLMMHUMNMOMPMQMRMSMTMUMVMWMXMYMZNANCNENFNGNINLNONPNRNUNZOMPAPEPFPGPHPKPLPMPNPRPSPTPWPYQARERORSRURWSASBSCSDSSSESGSHSISJSKSLSMSNSOSRSTSVSXSYSZTCTDTFTGTHTJTKTLTMTNTOTRTTTVTWTZUAUGUMUSUYUZVAVCVEVGVIVNVUWFWSYTYEZAZMZWCSANphonestring <phone>requirednullableemailstring <email>requirednullableRecipient email address
countryobjectrequiredA country, by its ISO 3166-1 alpha-2 code.
isoCodestringADAEAFALAGAIAQAMAOARASATAUAWAXAZBABBBDBEBFBGBHBIBJBLBMBNBOBQBRBSBTBVBWBYBZCACCCDCFCGCHCICKCLCMCNCOCRCUCVCWCXCYCZDEDJDKDMDODZECEEEGEHERESETFIFJFKFMFOFRGAGBGDGEGFGGGHGIGLGMGNGPGQGRGSGTGUGWGYHKHMHNHRHTIDIEILIMINIOIQIRISITJEJMJOJPKEKGKHKIKMKNKPKRXKKWKYKZLALBLCLILKLRLSLTLULVLYMAMCMDMEMFMGMHMKMLMMHUMNMOMPMQMRMSMTMUMVMWMXMYMZNANCNENFNGNINLNONPNRNUNZOMPAPEPFPGPHPKPLPMPNPRPSPTPWPYQARERORSRURWSASBSCSDSSSESGSHSISJSKSLSMSNSOSRSTSVSXSYSZTCTDTFTGTHTJTKTLTMTNTOTRTTTVTWTZUAUGUMUSUYUZVAVCVEVGVIVNVUWFWSYTYEZAZMZWCSANuseExistingAddressbooleanaddressobjectrequiredidnumber <int64>Address ID
totalValuenumberexternalReferenceCodestringexternalCustomerIdstringinsurancebooleanInsure the shipment. Defaults to false. Rates always include the insurance price (insuranceFee) in totalChargePrice; it is charged only when this is true.
incotermsstringDDUDDPparcelsarray of objectdimUnitstringrequiredUnit of length, width and height.
cminwidthnumberrequiredlengthnumberrequiredheightnumberrequiredweightUnitstringrequiredUnit of weight.
gmkgozlbgmweightnumberrequiredparcel_itemsarray of objectrequiredskustringforwardingOrderItemIdstringShips a package that is already in your locker: the uid of the forwarding order item, as listed by GET /forwarder. The item must belong to the shipment’s account. Its weight and quantity, and its declared value when it has one, are read from the locker, and the parcel’s dimensions are recalculated from its weight. An unknown uid, or an item of another account, is a 400.
descriptionstringrequiredcategoryobjectrequiredslugstringrequiredpricenumberrequiredqtynumberrequiredoriginCountryobjectisoCodestringweightnumbercurrencystring | CurrencyrequiredCurrency of the item value: an ISO 4217 code, or a currency object.
namestringrequiredcodestringrequiredprefixstringrequiredThe updated shipment
Validation error, or the shipment can no longer be edited
namestringBadRequestmessagestringcodenumber400classNamestringbad-requestdataobjectMissing or invalid access token
namestringNotAuthenticatedmessagestringcodenumber401classNamestringnot-authenticateddataobjectNo shipment has that id
namestringNotFoundmessagestringcodenumber404classNamestringnot-founddataobjectcurl -X PATCH 'https://sandbox.weshipyou.com/api/v1/shipments/{shipmentId}' \
-H "Authorization: Bearer $WSY_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"accountId": "CU1234567",
"sender": {
"useExistingAddress": false,
"nickname": "Main office",
"address": {
"city": {
"name": "Homestead",
"state": {
"name": "Florida"
}
},
"street": "924 NW 36 Ave",
"postalCode": "33033"
},
"name": "John Doe",
"companyName": "We Ship You Corp",
"taxId": "88-1345985",
"taxIdCountry": {
"isoCode": "US"
},
"phone": "+1 (786) 651-0451",
"email": "john.doe@weshipyou.com",
"country": {
"isoCode": "US"
}
},
"recipient": {
"useExistingAddress": false,
"nickname": "Main office",
"address": {
"city": {
"name": "Homestead",
"state": {
"name": "Florida"
}
},
"street": "924 NW 36 Ave",
"postalCode": "33033"
},
"name": "John Doe",
"companyName": "We Ship You Corp",
"taxId": "88-1345985",
"taxIdCountry": {
"isoCode": "US"
},
"phone": "+1 (786) 651-0451",
"email": "john.doe@weshipyou.com",
"country": {
"isoCode": "US"
}
},
"totalValue": 2999,
"externalReferenceCode": "ORDER-1001",
"externalCustomerId": "CUST-42",
"insurance": true,
"incoterms": "DDU",
"parcels": [
{
"dimUnit": "cm",
"width": 10,
"length": 10,
"height": 10,
"weightUnit": "gm",
"weight": 100,
"parcel_items": [
{
"sku": "SKU-WSY-EXAMPLE",
"description": "Play Station 4",
"category": {
"slug": "board_games"
},
"price": 450,
"qty": 1,
"originCountry": {
"isoCode": "JP"
},
"weight": 2.5,
"currency": "USD"
}
]
}
]
}'{
"uid": "42ailx0umn2q",
"state": "created",
"statusTracking": "in transit",
"transactionState": null,
"externalReferenceCode": "ORDER-1002",
"externalCustomerId": "CUST-42",
"externalUniqueId": null,
"incoterms": "DDU",
"weightUnit": "gm",
"dimUnit": "cm",
"weight": 2.5,
"length": 10,
"width": 10,
"height": 10,
"totalValue": 450,
"insurance": true,
"insuranceAmount": null,
"sellerNotes": null,
"buyerNotes": null,
"labelCreatedAt": null,
"deliveredAt": null,
"cancellationReason": null,
"cancellationReasonCode": null,
"sender": {
"uid": "vbnk8892rbji",
"nickname": "Main office",
"companyName": "We Ship You Corp",
"name": "John Doe",
"taxId": "88-1345985",
"email": "john.doe@weshipyou.com",
"phone": "+1 (786) 651-0451",
"isResidential": false,
"status": "active",
"address": {
"uid": "e9j57zlvd0z8",
"houseNumber": "924",
"road": "nw 36 ave",
"unit": null,
"city": {
"name": "Homestead",
"state": {
"name": "Florida",
"isoCode": "FL",
"country": {
"isoCode": "US",
"name": "United States"
}
}
},
"postal_code": {
"postalCode": "33033"
}
}
},
"recipient": {
"uid": "vbnk8892rbji",
"nickname": "Main office",
"companyName": "We Ship You Corp",
"name": "John Doe",
"taxId": "88-1345985",
"email": "john.doe@weshipyou.com",
"phone": "+1 (786) 651-0451",
"isResidential": false,
"status": "active",
"address": {
"uid": "e9j57zlvd0z8",
"houseNumber": "924",
"road": "nw 36 ave",
"unit": null,
"city": {
"name": "Homestead",
"state": {
"name": "Florida",
"isoCode": "FL",
"country": {
"isoCode": "US",
"name": "United States"
}
}
},
"postal_code": {
"postalCode": "33033"
}
}
},
"createdAt": "2026-11-01T00:37:51.000Z",
"updatedAt": "2026-11-01T00:37:52.000Z"
}Deletes a shipment that has no label yet (state created). To cancel a shipment whose label is already bought, use DELETE /shipments/labels/{trackingNumber}.
shipmentIdstringrequiredThe shipment uid, or its WeShipYou tracking number (WSY…).
Accept-LanguagestringTwo-letter code of the language for messages: en, es or pt.
en-USThe deleted shipment
The shipment cannot be deleted in its current state
namestringBadRequestmessagestringcodenumber400classNamestringbad-requestdataobjectMissing or invalid access token
namestringNotAuthenticatedmessagestringcodenumber401classNamestringnot-authenticateddataobjectNo shipment has that id
namestringNotFoundmessagestringcodenumber404classNamestringnot-founddataobjectcurl -X DELETE 'https://sandbox.weshipyou.com/api/v1/shipments/{shipmentId}' \
-H "Authorization: Bearer $WSY_ACCESS_TOKEN"{
"uid": "wwbvygom0rlz",
"state": "created",
"statusTracking": "in transit",
"transactionState": null,
"externalReferenceCode": "shp1x6",
"externalCustomerId": null,
"externalUniqueId": null,
"incoterms": "DDU",
"weightUnit": "gm",
"dimUnit": "cm",
"weight": 1000,
"length": 10,
"width": 10,
"height": 10,
"totalValue": 10,
"insurance": 0,
"insuranceAmount": null,
"sellerNotes": null,
"buyerNotes": null,
"labelCreatedAt": null,
"deliveredAt": null,
"cancellationReason": null,
"cancellationReasonCode": null,
"createdAt": "2026-11-01T00:37:50.000Z",
"updatedAt": "2026-11-01T00:37:50.000Z"
}Lists the content categories a parcel item can declare.
Accept-LanguagestringTwo-letter code of the language for messages: en, es or pt.
en-USA page of shipment content categories.
totalintegerrequiredTotal number of matching records.
limitintegerrequiredPage size used for this response.
skipintegerrequiredNumber of records skipped before this page.
dataarray of CategoryrequiredMissing or invalid access token
namestringNotAuthenticatedmessagestringcodenumber401classNamestringnot-authenticateddataobjectForbidden
curl 'https://sandbox.weshipyou.com/api/v1/shipments/categories' \
-H "Authorization: Bearer $WSY_ACCESS_TOKEN"{
"total": 30,
"limit": 500,
"skip": 0,
"data": [
{
"uid": "u40h56jccmdi",
"name": "Phone Accessory (no battery)",
"slug": "accessory_no_battery",
"weight": null,
"length": null,
"width": null,
"height": null,
"containsDocuments": 0,
"containsOtherDg": 0,
"containsLiquids": 0,
"containsBatteryPi967": 0,
"containsBatteryPi966": 0,
"containsBatteryPi965": 0,
"parentId": null
}
]
}Lists the content categories a destination country uses for customs.
Accept-LanguagestringTwo-letter code of the language for messages: en, es or pt.
en-USA page of country-specific content categories.
totalintegerrequiredTotal number of matching records.
limitintegerrequiredPage size used for this response.
skipintegerrequiredNumber of records skipped before this page.
dataarray of Country categoryrequiredMissing or invalid access token
namestringNotAuthenticatedmessagestringcodenumber401classNamestringnot-authenticateddataobjectForbidden
curl 'https://sandbox.weshipyou.com/api/v1/shipments/country-categories' \
-H "Authorization: Bearer $WSY_ACCESS_TOKEN"{
"total": 0,
"limit": 500,
"skip": 0,
"data": []
}Buys the label of one or more shipments at the rate you chose. The charge is booked in your WeShipYou wallet: your balance is used first and only the remainder is charged to paymentMethod.
Each label costs its rate’s totalChargePrice minus insuranceFee when the shipment is not insured (rates always include insurance), plus pickupFee and minimumPickupFee for a pickup handover. A coupon lowers it further.
Accept-LanguagestringTwo-letter code of the language for messages: en, es or pt.
en-USaccountIdstringAccount uid, account number (CU…) or external account number.
paymentMethod"credit_line" | objectHow to pay what your wallet balance does not cover: "credit_line" for accounts with a credit line, or a saved card as { "paymentMethodId": "pm_…" }. Can be omitted when the balance covers the whole amount.
credit_linepaymentMethodIdstringusePointsbooleanSpend your WeShipYou points first.
insurancebooleanInsure every shipment of this purchase (true) or none of them (false). Leave it out to keep each shipment’s own insurance.
handoverOptionsarray of objectrequiredhandoverOptionstringrequireddropoffpickuppickupDatestring <date>pickupTimestringshipmentsarray of objectrequiredshipmentIdstringrequiredShipment uid or WeShipYou tracking number.
rateIdstringrequiredThe uid of the chosen rate of that shipment.
The outcome of each label batch
statusstringrequiredOutcome of the batch.
fulfilledrejectedreasonanyWhy the batch failed, when status is rejected.
Invalid request, payment not found or insufficient funds
namestringBadRequestmessagestringcodenumber400classNamestringbad-requestdataobjectMissing or invalid access token
namestringNotAuthenticatedmessagestringcodenumber401classNamestringnot-authenticateddataobjectYou do not have access to this account
namestringForbiddenmessagestringcodenumber403classNamestringforbiddendataobjectcurl -X POST 'https://sandbox.weshipyou.com/api/v1/shipments/labels' \
-H "Authorization: Bearer $WSY_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"accountId": "CU1234567",
"paymentMethod": "credit_line",
"usePoints": true,
"insurance": false,
"handoverOptions": [
{
"handoverOption": "dropoff",
"pickupDate": "2026-10-02",
"pickupTime": "10:00",
"shipments": [
{
"shipmentId": "6f1c2b8e-3d4a-4f5b-9c6d-7e8f9a0b1c2d",
"rateId": "0b1c2d3e-4f5a-4b6c-8d7e-9f0a1b2c3d4e"
}
]
}
]
}'[
{
"status": "fulfilled"
}
]Cancels a label the carrier has not picked up yet. What you paid for it is credited back to your WeShipYou wallet.
trackingNumberstringrequiredThe WeShipYou tracking number of the label.
Accept-LanguagestringTwo-letter code of the language for messages: en, es or pt.
en-USThe label was cancelled
idstringrequiredWeShipYou tracking number of the cancelled label.
The label can no longer be cancelled
namestringBadRequestmessagestringcodenumber400classNamestringbad-requestdataobjectMissing or invalid access token
namestringNotAuthenticatedmessagestringcodenumber401classNamestringnot-authenticateddataobjectYou do not have access to this account
namestringForbiddenmessagestringcodenumber403classNamestringforbiddendataobjectNot found
namestringNotFoundmessagestringcodenumber404classNamestringnot-founddataobjectThe shipment changed state while cancelling; retry
namestringConflictmessagestringcodenumber409classNamestringconflictdataobjectcurl -X DELETE 'https://sandbox.weshipyou.com/api/v1/shipments/labels/{trackingNumber}' \
-H "Authorization: Bearer $WSY_ACCESS_TOKEN"{
"id": "WSYOP5B60J3SCU"
}Records that the recipient received a shipment that is in transit or delivered. No access token is needed: the tracking number and the account number identify the shipment.
A shipment that is already delivered can always be confirmed. An in_transit shipment can be confirmed only when it is overdue (its label was bought at least 30 days ago and, when it has a delivery promise, at least 15 days have passed since that date) and it has not reached WeShipYou at destination. Once the package is with WeShipYou in Cuba (picked up at the airport or port, on a transit trip or a delivery route), only WeShipYou marks it delivered. A refusal is a 400 with data.code: delivery-confirmation-at-destination, or delivery-confirmation-too-early with data.availableFrom.
Accept-LanguagestringTwo-letter code of the language for messages: en, es or pt.
en-UStrackingNumberstringrequiredaccountNumberstringrequiredThe account number of the shipment owner (CU…).
Delivery recorded
okbooleantrueidstringThe tracking number.
Missing fields, unknown account or shipment, or a shipment that is not in transit
namestringBadRequestmessagestringcodenumber400classNamestringbad-requestdataobjectcurl -X POST 'https://sandbox.weshipyou.com/api/v1/shipments/confirm-delivery' \
-H "Content-Type: application/json" \
-d '{
"trackingNumber": "WSY0000000000US",
"accountNumber": "CU1234567"
}'{
"ok": true,
"id": "WSYZD8KI41VSCU"
}