ReturnZen Help Center
Internal draft, built 13 November 2026, checked against the app at main e37fbe70; changes landed since, up to main c597a2cd, are written from the build summaries. Screenshot boxes are placeholders.
Help Center›Shipping and labels›Shipping Services
Home ›

Shipping Services

Updated 11 November 2026

Overview

This article explains the Shipping Services page and the EasyPost page it opens. Shipping Services holds the store-wide shipping settings: the EasyPost connection, the shipping email carriers use, label defaults, packing slip formatting, USPS Label Broker, prepaid labels and a rate calculator. Labels are bought through your own EasyPost account and the carrier accounts attached to it. This article covers the connection; the other cards have their own articles.

Use the menu on the left to quickly navigate this article.

Before you start

  • An EasyPost account with at least one carrier account attached, and an API key from it.
  • A default destination under Shipping > Destinations, because the connection test rates a shipment to it.

Shipping Services and the EasyPost connection

Connecting EasyPost

In the admin, go to Shipping > Shipping Services.

The page's own line reads Set up return labels, packing slips and shipping emails. Its Integrations card reads Connect the services ReturnZen uses for labels and tracking.

  1. In the Integrations card, click Manage Integration on the EasyPost line (or Connect Shipping Service, then Set up on the EasyPost tile). The EasyPost page opens.
  2. Paste your key into the EasyPost API key box. A test key starts EZTK and a live key starts EZAK.
  3. Click Save API Key. The page reads API key saved and shows a Test mode or Live mode chip.
  4. Click Test Connection and read the verdict (see below).
  5. Register the webhook and save its signing secret (see below).
Screenshot

Shipping > Shipping Services, the EasyPost page with a saved key, the Live mode chip and the Test Connection button

Settings

  • EasyPost status: on Shipping Services the EasyPost line reads Connected with the mode and the number of carriers found on the key, or Not connected. The same status is shown on Tools > Integrations, so the two pages never disagree. A key the server cannot read shows Credentials cannot be read on the tile; save the key again.
  • Edit Default Service: opens the EasyPost page, where carrier accounts and their services are managed. It is disabled with Connect EasyPost first until a key is saved.
  • EasyPost API key: used to create return labels. The key's prefix sets the mode: a key starting EZTK is a test key and a key starting EZAK is a live key. Default: empty.

Once a key is saved, the box stays blank with the placeholder Enter a new key to replace the saved one, the saved key is shown masked, and the line under the box adds Leave blank to keep the saved key. Keys are stored encrypted. The Carrier Testing button in the header opens EasyPost's API keys page.

  • Test Connection: runs a rate check against the saved key and reports one verdict. Rates returned. with the carrier, service and price that would be selected, and The connection is healthy, is the one you want. The others are No EasyPost API key is in use, EasyPost returned an error: with the error, EasyPost responded but did not return a shipment., Shipment created (shipment id) but 0 rates came back., or Got N rate(s) but none was selected., which means the policy's Labels & shipping filter excluded every rate. While EasyPost is switched off or no key is saved, the test does not run and the result names the cause. It is a rate check only; no label is purchased. Raw response (paste this when asking for help) sits underneath.

Note: In test mode, USPS only returns rates when both the from and to addresses are valid US addresses. In live mode, no rates usually means no carrier account is enabled for this key.

  • Webhook address: https://api.returnzen.app/api/webhooks/easypost, the same for every store, printed in the Webhook signing secret card with a Copy Address button. The card reads In EasyPost, open Webhooks & Events, click Add webhook, choose Production (or Test) and paste this address.
  • Webhook signing secret: set when you add the webhook in EasyPost. Tracking updates without a valid signature are refused, so the secret is required for tracking to work. Paste it and click Save Webhook Secret.

Important: Without the secret, every tracking update EasyPost sends is refused. Register the webhook and save the secret before your first live return.

  • Carrier accounts: Available carriers lists every carrier attached to your EasyPost account. Carriers are added or removed in the EasyPost dashboard, not here; the empty state reads No carrier accounts attached. with an Add one in EasyPost link. Edit Carrier opens the carrier's own page in ReturnZen; see Carrier services and label customization.
  • Disconnect EasyPost: at the foot of the page. The Disconnect EasyPost? dialog reads This clears your saved API key. Returns will get no shipping label until you save a new key. Click Disconnect EasyPost to confirm.
Screenshot

The EasyPost page, the Webhook signing secret card with the webhook address, Copy Address and the secret box

What the shopper sees

Nothing on this page directly. Whether a shopper gets a label is decided per return policy under Labels & shipping; this page decides whose account buys it.

How it works

Label cost is charged to your EasyPost account, in EasyPost's billing currency, whatever your store's currency. A test mode key never buys a real label, so use it while you set up and switch to a live key before going live.

While EasyPost is switched off under Tools > Integrations, or has no saved key, no label is bought and no placeholder label is made. A shopper on a policy that offers a label gets the self-ship method and your return address instead, and a return you create in the admin is self-ship too. On the return page, Create Shipping Label and Regenerate Label are disabled, with a sentence saying why and a link to the EasyPost page. See Self-Ship Returns.

In those two states, and with a key the server cannot read, ReturnZen stops checking carriers for updates on its own. A scan EasyPost sends can still update a return. Instant Exchange charges whose ship-by date has passed are held, with a bell alert that reads Instant Exchange charges are on hold while EasyPost is switched off. Switch EasyPost on to resume them. They resume on the first night EasyPost is back.

Carrier services and label customization

This section covers the carrier page behind each carrier account in your EasyPost connection. It holds two decisions: which of that carrier's services rate shopping is allowed to use, and what extra text prints in the carrier's custom fields on the label.

Before you start: EasyPost connected under Shipping > Shipping Services, with the carrier attached to your EasyPost account.

Opening a carrier

In the admin, go to Shipping > Shipping Services, click Manage Integration, then Edit Carrier beside the carrier.

The page is titled with the carrier's name and has two cards, Carrier settings and Label customization. Changes are saved with Save Changes in the bar at the foot of the page; Discard Changes drops them.

Screenshot

The USPS carrier page with Customized carrier service types on and three services ticked

Carrier settings

  • Customized carrier service types: if toggled on, rate shopping uses only the service types checked below. If toggled off, it uses every service type this carrier offers. Default: off.

    Note: With the toggle on, some labels are not generated: a return on a route that none of the checked services covers gets no label.

With the toggle on, tick the services to allow. An international service carries an International chip.

For a carrier type ReturnZen has no service list for, there is nothing to tick and the card reads This carrier type has no service list, so rate shopping uses every service EasyPost returns. With nothing to tick, every rate is allowed whether the toggle is on or off.

Label customization

The card reads Choose the values printed on this carrier's labels. Some carriers do not print every field; generate a test label to check.

  • Customize fields: one block per slot the carrier supports, named as the carrier names them: Print Custom 1, Print Custom 2, Print Custom 3 and Invoice Number for USPS; Print Custom 1 and Invoice Number for UPS and FedEx; Print Custom 1 for DHL Express; Print Custom 1 and Print Custom 2 for Canada Post. Each slot has a Prefix, a Value and a Suffix. The Value choices are Blank, Order name, RMA number, Return outcomes, Customer email, Customer name and Custom text; choosing Custom text opens a Custom text box for free-form text. The prefix and suffix print around the value. An empty slot prints nothing.
  • Show as a barcode: on Canada Post's Print Custom 1 only. Prints this field as a barcode on the label. Default: off.
Screenshot

The Label customization card on the Canada Post page, Print Custom 1 set to RMA number with Show as a barcode on

What the shopper sees

Whatever you put in the slots prints on the label they receive. Keep the customer's email and name off the label unless you want them visible on the parcel.

USPS Label Broker

This section covers the USPS Label Broker card on the Shipping Services page. With it on, a shopper can choose a QR code instead of a printable label. They show it at any USPS Post Office or to their letter carrier, and USPS prints the label for free.

Before you start: EasyPost connected under Shipping > Shipping Services, with a USPS carrier account attached. A return policy with Generate return labels on, so the shopper gets a label at all.

Settings

In the admin, go to Shipping > Shipping Services, the USPS Label Broker card.

  • Enable USPS Label Broker QR codes: if toggled on, shoppers can choose a QR code to show at the post office instead of a printed label. If toggled off, shoppers get a printable label. Default: off.

    Note: QR codes work only for USPS labels. A return whose label comes from another carrier gets a PDF label, even if the shopper picked the QR code.

Screenshot

Shipping > Shipping Services, the USPS Label Broker card with the toggle on

Click Save Changes in the bar at the foot of the page.

What the shopper sees

  1. On the review step, the question How would you like to ship this back? with two cards: Print label at home (You'll get a PDF label to print and tape on the package.) and QR code at any USPS Post Office (Show the QR code on your phone. A USPS clerk prints the label for free. No printer needed.).
  2. After submitting, the status page card reads Your QR code is ready with the code, the line Show this QR code at any USPS Post Office or to your letter carrier. A USPS clerk will print your shipping label for free. Drop off your package by the date, the Label Broker ID, a Find a USPS Location button and a Print return label instead link for the PDF.
Screenshot

The shopper's status page with the QR code card, the Label Broker ID and the Find a USPS Location button

Note: The choice is only shown while this toggle is on. The Label Broker ID under the code is what USPS staff can type if the code will not scan.

While EasyPost is switched off under Tools > Integrations, or has no saved key, no label is bought, so there is no QR code. The shopper gets the self-ship method and your return address instead.

Prepaid labels

This section covers the Prepaid labels card on the Shipping Services page. It takes a CSV of return labels you have already paid for outside ReturnZen and writes each tracking number onto the matching return, so the return is tracked like any other.

Before you start: The returns the labels belong to already exist in ReturnZen, because each line of the file is matched to a return. A CSV with one line per label in the format printed on the card: provider_order_id, tracking_code, carrier.

Uploading a file

In the admin, go to Shipping > Shipping Services, the Prepaid labels card.

  1. Under Upload a CSV, choose your file.
  2. Click Upload N Rows.
  3. Read the result: Imported and skipped counts, with each skipped line listed with its reason.
Screenshot

Shipping > Shipping Services, the Prepaid labels card after an upload, showing Imported 12, skipped 1 and the skipped line's reason

Settings

  • Upload a CSV: upload your prepaid label details as a CSV file, three columns in this order. The first column is the return's Shopify order id, order name (with or without the #) or RMA number; the second is the tracking code; the third is the carrier, which is optional. When more than one return matches, the latest is used.

Note: A malformed file is refused with a message naming the bad lines; nothing from it is imported.

What the shopper sees

Nothing from the upload itself. The import writes only the tracking number and carrier onto the return and takes the return off the expiry clock. No label reaches the shopper and no email is sent, so send the prepaid label to the shopper yourself.

How it works

ReturnZen matches the first column against the return's Shopify order id, its RMA number and its order name, and records the tracking code and carrier on the return. Because the return now carries a tracking number, the 20 to 22 day expiration reminder and the 28 day expiry no longer apply to it.

Rate calculator

This section covers the Rate calculator card on the Shipping Services page. It checks shipping rates for a route and a parcel you type, without creating a return, so you can see what a return label is likely to cost before you set a policy's label settings. Shoppers never see it.

Before you start: EasyPost connected under Shipping > Shipping Services with at least one carrier account, otherwise no rates come back. EasyPost switched on under Tools > Integrations. While it is switched off or has no saved key, the card says so and calculates nothing.

Calculating rates

In the admin, go to Shipping > Shipping Services, the Rate calculator card.

  1. Check the Origin zip and Origin country. The zip starts filled with your default destination's zip, so swap it for a customer's zip to price a real route.
  2. Type the Destination zip and choose the Destination country.
  3. Type the parcel Length, Width and Height (in). They start empty. A blank dimension stops the calculation.
  4. Type the Weight (lb) and Weight (oz). They start empty.
  5. Click Calculate Rates. Until every field is filled the card reads Enter the parcel dimensions and a weight to get rates.
Screenshot

Shipping > Shipping Services, the Rate calculator card with a route and parcel typed and a table of rates underneath

What the result shows

A table with Carrier, Service, Rate (USD) and Delivery (days) for every rate EasyPost returns. When EasyPost answers with a message and no rates, the card reads No rates were returned. EasyPost said: followed by the carrier's message. When no carrier offered a rate, it reads No rates found for this route.

While EasyPost is switched off, the card reads Rates are unavailable while EasyPost is switched off. With no key saved, it reads Rates are unavailable until an EasyPost key is saved. Both carry a link to the EasyPost page. When no rates are available and no request went to EasyPost, it reads No rates are available. Nothing was sent to EasyPost.

Note: Rates are EasyPost's quote in US dollars whatever your store currency, and they are not the exact label cost: a real return uses the customer's full address and the items' real weights. Nothing is bought by calculating.

Label defaults and the shipping email

This section covers the Shipping notifications and Label and shipment settings cards on the Shipping Services page. They describe the parcel ReturnZen sends to the carrier when it asks for rates, and the email address carriers use to send you delivery confirmations and shipping exceptions. These figures shape the rate every label is bought at.

Before you start: EasyPost connected under Shipping > Shipping Services. Without it there are no rates to shape.

Settings

In the admin, go to Shipping > Shipping Services. Changes on this page are saved with Save Changes in the bar at the foot of the page.

Shipping notifications

  • Shipping email: used by carriers to send you delivery confirmations and shipping exceptions. Required by some carriers to generate labels. Default: empty.

Label and shipment settings

  • Weight unit: how the two weight fields are shown, grams or ounces. Default: grams. Changing it converts the numbers; nothing else changes.
  • Product weight default: applied per product only when the product's weight is not in Shopify. Default: 400 grams.
  • Box weight default: the typical weight of the packaging used to send back returns. Default: 25 grams.
  • Package width default, Package height default, Package length default: the typical size of the packaging used to send back returns, in inches. Default: 0.
Screenshot

Shipping > Shipping Services, the Label and shipment settings card with the weight unit, product weight and box weight filled in

Tip: Weigh an empty return mailer and a typical returned item and type those figures, and keep product weights filled in on Shopify so the product default is rarely used.

What the shopper sees

Nothing. These figures shape the rate the carrier quotes and therefore the label you pay for.

How it works

The parcel weight for a return is the sum of the item weights, from Shopify or the product default, plus the box weight. The return page shows the total.

Which carriers are compared for a return is set per policy under Labels & shipping: Best label rate (recommended) compares every connected carrier, Specific carriers only limits the list.

A 400 gram hoodie with no weight in Shopify, in a 25 gram mailer, is quoted to the carrier at 425 grams. If Shopify holds the hoodie's real weight of 520 grams, the quote is 545 grams and the product default is not used.

Packing slip formatting

This section covers the Packing slips card on the Shipping Services page, which sets how the printable packing slip looks. Shoppers include the slip inside the package so your warehouse team knows what is in the box when it arrives. Whether a shopper is offered a slip at all is decided in each return policy under Labels & shipping; this card only decides the slip's contents.

Before you start: Generate packing slips on, under Labels & shipping, in each return policy that needs slips. It is off by default.

Settings

In the admin, go to Shipping > Shipping Services, the Packing slips card.

  • Show tax-inclusive pricing on the packing slip: if toggled on, item prices on the packing slip include tax and the price column reads Price (incl. tax). If toggled off, the slip shows the base item price and the column reads Base item price. Default: off.

    Tip: Turn it on in VAT or GST regions, where the price the shopper recognises includes tax.

  • Include barcode: prints a scannable barcode on the packing slip. Default: on.

  • Barcode content: Return ID (RMA) encodes the return's RMA number, the fastest way to open the right return in the admin; Shopify order number encodes the original Shopify order number, for a warehouse that works from orders rather than returns. Default: Return ID (RMA).
Screenshot

Shipping > Shipping Services, the Packing slips card with Include barcode on and Return ID (RMA) selected

Click Save Changes in the bar at the foot of the page.

What the shopper sees

A Print Packing Slip button on the status page while a box is still to be sent (a ready label, a QR code or a self-ship return), when the matched policy has Generate packing slips on. The slip shows your store logo, or your store name when no logo is set, the order, the return ID, the customer, the ship-to address, the items with their reasons and quantities, and the barcode if included. The line at the top reads Include a copy of this packing slip in each package. The page opens the print dialog on its own.

Screenshot

The printable packing slip with the items table, reasons and the RMA barcode

Note: Turning options on here does not put the button in front of shoppers. If it is missing, open the policy that matched the order and check Generate packing slips on the Labels & shipping tab.

FAQ

Which key do I paste, test or live? Either. ReturnZen reads the mode from the prefix: EZTK is test, EZAK is live. Set up and run your first test returns on a test key, then replace it with the live key.

Can I keep a key out of the admin and have support set it on the server? A key set on the server is shown as Set on the server beside the masked key. A key saved on this page is used instead of it.

The page reads Settings could not be loaded. Refresh the page. What do I do? Refresh the page. Nothing is saved while the page is in that state.

Do I need to tell ReturnZen when I add a carrier in EasyPost? No. Open the EasyPost page and the new carrier appears under Available carriers. You only need to come back here to restrict its services.

I ticked services and now some returns get no label. Why? Rate shopping only compares the services you ticked. If none of them serves the route, for example a domestic-only service on an international return, rate shopping falls back to every rate EasyPost returned, so a label is still bought. Tick a wider set, or turn Customized carrier service types off.

Does the order number print without these fields? Yes. The order number is sent with every return label, but a slot you fill here replaces it in that slot. Whether a carrier prints a field is up to the carrier. The custom slots add text in the carrier's own fields on top of that.

Why did my custom text not show on the label? Some carriers do not print every field. Generate a test label after changing the slots and look at it before relying on the text.

Can I make the QR code the only choice? No. The shopper always sees both cards and picks one. The Print return label instead link on the status page also lets a shopper who chose the QR code print the PDF after all.

How do I see which shoppers chose the QR code? The Return method column on the returns list reads QR code for those returns.

Does the QR code cost more than a label? No. The label is bought through EasyPost at the USPS rate either way; USPS prints it at the counter for free.

Can I include a header line? The card prints the expected format. Keep to three columns in that order, one label per line.

What if a line is skipped? The result names the line and the reason, usually a value in the first column that matches no return. Fix that line and upload it again.

Does the shopper get an email with the tracking number? No. The import sends no email. Email the label and tracking number to the shopper yourself.

Why do I get rates here but a return got no label? A real return is rated with the policy's label settings, the carrier's allowed services and the customer's full address; the calculator only takes a zip and a country. Check the policy's Labels & shipping tab, the carrier's page and the reason shown on the return page.

Can I price an international return? Yes, choose the countries at both ends. A rate only comes back from a carrier account that serves that route, so a US-only account returns nothing for a parcel starting in the UK.

Can I check what a parcel of these figures costs to ship? Yes. Use the Rate calculator on the same page; type the route and the parcel and it lists every rate EasyPost returns without buying anything.

Do I need a shipping email? Some carriers refuse to generate a label without one, so fill it in before your first live return.

Which barcode should I pick? Return ID (RMA) if your team works from the returns list, because the RMA can be typed or scanned into its search box. Shopify order number if your receiving software keys off the Shopify order.

Can I change the layout or add my logo? The slip already prints your store logo, or your store name when no logo is set. The layout itself is fixed; the settings on this card are the only formatting choices.

A shopper did not print the slip. Can I print it for them? The slip is built for the shopper's status page. Your team can open the return in the admin to see the same items and reasons at receiving.

Please reach out to support@returnzen.app with any additional questions.

shipping serviceseasypostcarrierslabel brokerpacking slip
Was this article helpful?YesNo