Why is my Etsy shipping address missing?
Why is my Etsy shipping address missing?
If your EcartAPI integration retrieves Etsy orders and the shippingAddress comes back empty or null, you have hit an Etsy API policy restriction — not a bug in EcartAPI. This guide explains why it happens, whether you are affected, and what to do.
The root cause: Etsy restricts address access
Etsy limits which third-party apps can read the buyer's full shipping address through their API. Unless your app has been approved as an Etsy Calculated Shipping partner, the API response for orders omits the buyer's street-level shipping details.
This restriction was rolled out progressively by marketplace (the country the shop is registered in). Integrations created before the cutoff date for their marketplace continue to receive the address as they always did. Integrations created after the cutoff get a redacted response.
Cutoff dates by marketplace
| Marketplace | Cutoff date |
|---|---|
| United States (etsy.com) | April 2024 |
| United Kingdom (etsy.co.uk) | April 2024 |
| Canada | April 2024 |
| Australia | April 2024 |
| Germany, France, and other EU countries | April 2024 |
| Mexico (etsy.com.mx) | June 2024 |
If you are unsure of the exact cutoff for your shop's country, check whether a test GET returns a populated
shippingAddress(see below).
How to tell if your integration is affected
Make a GET /api/v2/orders/{id} call for any recent Etsy order through EcartAPI. Inspect the response:
{
"shippingAddress": {
"address1": null,
"city": null,
"postalCode": null,
"country": { "code": null, "name": null }
}
}If the address fields are null or empty, your integration falls under the restriction. If they are populated, your integration predates the cutoff and you are not affected.
What you need the address for (and what you don't)
Not every use case requires the full shipping address. Before reaching for Orders Extract, confirm whether your workflow actually needs it:
| Use case | Needs shipping address? |
|---|---|
| Get a shipping rate from a carrier | Yes — destination address is required |
| Print a shipping label | Yes — destination address is required |
Mark an order as fulfilled (createOrderFulfillment) | No — only tracking info is needed (see below) |
| Read order items, totals, payment status | No |
Creating a fulfillment does not require an address
EcartAPI's POST /api/v2/orders/{orderId}/fulfillments for Etsy only requires tracking information in the request body — the shipping address is not part of the call and is not validated:
{
"fulfillment": {
"tracking": {
"url": "https://tracking-url.com",
"number": "230128",
"company": "FedEx"
}
}
}You can mark Etsy orders as shipped without ever reading the buyer's address. The address restriction only matters when you need it to generate a label or calculate a rate.
Solution: Orders Extract
If you do need the shipping address, use the Orders Extract resource. It lets you parse the address from an Etsy document you already have — either the official CSV export (recommended, batch) or an order PDF (one at a time) — and returns it in the canonical EcartAPI address shape.
No special Etsy partnership is required. EcartAPI does not call Etsy to fetch the document — you upload the base64-encoded content yourself.
➡️ See Orders Extract (Etsy) for the full API reference, request/response format, and step-by-step instructions for downloading the documents from Etsy.
Summary
| Question | Answer |
|---|---|
Why is shippingAddress null? | Etsy restricts address access for apps created after the marketplace cutoff date. |
| Am I affected? | Make a test GET call and check whether shippingAddress is populated. |
| Do I need the address to mark an order as shipped? | No — createOrderFulfillment only requires tracking info. |
| How do I get the address if I need it? | Use Orders Extract with a CSV export or order PDF from your Etsy Shop Manager. |
Updated about 6 hours ago