Skip to main content
UPS Shipping Connector for ERPNext — A native Frappe app that wires UPS negotiated rates, label printing, and delivery tracki — 1/1Illustrative preview

A native Frappe app that wires UPS negotiated rates,

label printing, and delivery tracking directly into the ERPNext Delivery Note workflow.

ECOSIRE builds it to your account and carrier setup, then installs and supports it.

What is UPS Shipping Connector for ERPNext?

A native Frappe app that wires UPS negotiated rates, label printing, and delivery tracking directly into the ERPNext Delivery Note workflow. ECOSIRE builds it to your account and carrier setup, then installs and supports it. Built to order by ECOSIRE for ERPNext v15, v16 — indicative price from $999.00 USD; request a quote for a scoped proposal.

Key Features

UPS OAuth 2.0 client-credentials flow with encrypted secret storage in site config and cached bearer tokens refreshed on expiry
`UPS Settings` single DocType for account number, rate/label preferences, and per-service toggles
Live negotiated-rate quotes from the UPS Rating API at Delivery Note / Shipment submit, keyed on weight, dimensions, and destination
Custom fields for service level, shipping cost, and UPS tracking number persisted directly on the Delivery Note
One-click label generation returning GIF, ZPL (thermal), or PDF, auto-attached to the document as a Frappe File
Paperless commercial invoice upload for international shipments so customs docs travel with the request
Scheduler event that polls the UPS Track API and writes time-in-transit and delivery status back to ERPNext
Void Shipment action to cancel a generated label and reverse the UPS charge
Pickup Request action to schedule UPS collection from a warehouse address
`hooks.py` doc events on Delivery Note and Shipment (validate/on_submit/on_cancel) rather than fragile monkey-patching
Whitelisted server methods callable from the Frappe REST API for headless / external integrations
Role-based permissions and a Shipping role profile so only authorized users can rate, label, void, or request pickups
Client scripts for the in-form action buttons and inline rate display, versioned with the app
Sandbox/production endpoint switch for safe UAT against UPS test credentials before going live
Structured error handling and Error Log entries for UPS API failures, so a rejected shipment is visible instead of silent

Built to order, done for you

No DIY setup — a working app, built, installed and supported by ECOSIRE.

  1. 1

    You order

    Start with a one-time build price. We scope it with you at kickoff.

  2. 2

    We build & install

    ECOSIRE builds, configures and installs it on your ERPNext.

  3. 3

    Go live + support

    You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.

Technical Specifications

ERPNext Compatibility
—
License
Licence confirmation required
Python Requirement
Python 3.10+
Database
MariaDB 10.6+

About this Product

ERPNext handles quotations, sales orders, and stock beautifully, but the moment a warehouse team needs a real UPS rate at pick-and-pack time, native ERPNext runs out of road. Out of the box there is no UPS OAuth connection, no negotiated-rate quote on the Delivery Note, no label to print, and no tracking status flowing back into the document. Teams end up re-keying addresses into UPS WorldShip or ups.com, copying tracking numbers back by hand, and reconciling shipping cost after the fact — slow, error-prone, and impossible to audit against the sales order.

We build a proper Frappe app (installed with bench get-app / bench install-app) that lives inside ERPNext rather than bolting on beside it. A UPS Settings single DocType holds your OAuth 2.0 client credentials, account number, and rate/label preferences, with the client secret stored encrypted in the site config. A whitelisted server method authenticates against the UPS OAuth API, caches the bearer token until expiry, and calls the Rating, Shipping, Track, and Pickup endpoints. Doc events registered in hooks.py extend the standard Delivery Note and Shipment DocTypes: on submit we request a live negotiated-rate quote for the parcel's weight, dimensions, and destination, then persist the returned service level, cost, and UPS tracking number onto custom fields.

Label generation is a one-click action. A client script adds a "Get UPS Label" button that calls the whitelisted method, receives the label in your chosen format (GIF, ZPL for thermal printers, or PDF), and attaches it to the document as a File. Paperless commercial invoice upload is supported for international shipments so customs documents ride along with the shipment request. A scheduler event (registered under scheduler_events in hooks.py) polls the UPS Track API on an interval and writes time-in-transit and delivery status back onto the Delivery Note, so ops and customer service see live status without leaving ERPNext. Void Shipment and Pickup Request are exposed as guarded server actions with their own role permissions.

Because this is build-to-order, nothing is a black box. We scope the exact services, DocTypes, and print formats you need on a short call, build against your UPS developer account and ERPNext version (Frappe/ERPNext v15 or v16), and validate everything on a staging site before go-live. Typical delivery is one working week from confirmed scope depending on how many services (rating, labels, tracking, void, pickup, paperless invoice) and print/ZPL formats you require. You receive the installable source, the git repository, documentation, and a post-go-live support window — this is not an instant Marketplace download, it is a system engineered to your shipping process and handed over to you.

What you get

  • Installable source code for your version of the app, tagged and compatible with your Frappe/ERPNext v15 or v16 site
  • Installation and configuration on your environment, including UPS Settings, OAuth credentials, and custom fields
  • Technical documentation: DocType/custom-field map, hooks and scheduler events, whitelisted methods, and REST endpoints
  • User guide plus a live training session for warehouse and customer-service staff
  • UAT on a staging site with UPS sandbox credentials, followed by a documented cutover and rollback plan
  • Post-go-live support window for bug fixes and adjustments after production launch
  • Handover of the private git repository with full commit history and a versioned release
  • Print formats / ZPL templates configured for your label printers

Who this is for

ERPNext e-commerce merchant shipping with UPS

Runs fulfillment out of ERPNext and needs accurate negotiated rates and printable labels at pack time without re-keying orders into ups.com or WorldShip.

Distributor / 3PL operations manager

Ships high parcel volumes daily and wants tracking status and time-in-transit flowing back onto Delivery Notes so customer service can answer 'where is my order' inside ERPNext.

ERPNext system administrator / implementation partner

Owns the site and wants a clean, upgrade-safe Frappe app (proper hooks.py, DocTypes, permissions) they can maintain and extend, not brittle customizations.

Finance / logistics controller

Needs shipping cost and service level captured on each shipment against the sales order for accurate landed-cost reconciliation and carrier auditing.

How UPS Shipping Connector for ERPNext Compares

CriterionECOSIRECustom BuildCompetitorERPNext Native
UPS negotiated-rate quotes on Delivery NoteLive rate at submit, saved to the documentBuildable but you write the OAuth + Rating integrationSometimes list rates only, generic mappingNot available
Label printing (GIF / ZPL / PDF)One-click, auto-attached, thermal ZPL supportedMust implement label parsing and printer formatsPDF common, ZPL varies by appNo carrier label generation
Tracking status back into ERPNextScheduler polls UPS Track, writes status + transit timeYou build and schedule the polling jobOften manual or webhook-onlyNo tracking sync
Fit to your workflow and service mixScoped and built to your exact services and print formatsFully bespoke by definitionFixed feature set, take it or leave itGeneric, no UPS specifics
Upgrade safety (v15/v16)Standard hooks.py, custom fields, whitelisted methodsDepends on your team's disciplineVaries; some patch coreN/A
Void shipment and pickup requestGuarded server actions with role permissionsExtra endpoints you build yourselfFrequently omittedNot available
Source code and repo ownershipFull git repo + release handed overYou own it (you built it)Usually closed / licensed binaryN/A
Time and cost to productionone working week, fixed scope, includes UAT + trainingLonger; unbounded dev + QA effortFast install but config + gaps to closeNo development, but no capability either

Frequently Asked Questions about UPS Shipping Connector

Is this a ready-made app I can download and install today?

No. This is a build-to-order engagement. We build the UPS Shipping Connector against your UPS developer account, your service mix, and your ERPNext version, then install and support it. There is no instant Marketplace download.

How long does delivery take?

Typically one working week from confirmed scope. The exact timeline depends on which services you need (rating, labels, tracking, void, pickup, paperless invoice) and how many print/ZPL formats and integrations are involved. We give you a firm timeline after the scoping call.

Which ERPNext versions are supported?

We build for Frappe/ERPNext v15 and v16. We target your specific site version so the app installs cleanly with `bench get-app` / `bench install-app` and survives standard `bench update` cycles.

What happens with support and updates after go-live?

Every build includes a post-go-live support window for bug fixes and adjustments. Because you receive the full git repository and source, your own team can maintain it too. We also offer ongoing support and version-upgrade retainers separately if you want us to keep it current.

Do I need my own UPS account and API credentials?

Yes. UPS negotiated rates, labels, and tracking require your own UPS account and developer (OAuth) credentials. We help you configure them in the encrypted `UPS Settings` DocType and validate against UPS sandbox before switching to production.

Can it print thermal labels and handle international shipments?

Yes. Labels are returned in GIF, ZPL (for thermal/Zebra printers), or PDF, and attached to the document automatically. For international parcels we support paperless commercial invoice upload so customs documents accompany the shipment request.

Will this break when I upgrade ERPNext?

We build it as a standard Frappe app using documented extension points — hooks.py doc events, custom fields, whitelisted methods, and scheduler events — instead of patching core files. That is the upgrade-safe approach, and UAT includes a rollback plan so cutover is low-risk.

Request a quote

UPS Shipping Connector

A native Frappe app that wires UPS negotiated rates, label printing, and delivery tracking directly into the ERPNext Delivery Note workflow. ECOSIRE builds it to your account and carrier setup, then installs and supports it.

  • UPS OAuth 2.0 client-credentials flow with encrypted secret storage in site config and cached bearer tokens refreshed on expiry
  • `UPS Settings` single DocType for account number, rate/label preferences, and per-service toggles
  • Live negotiated-rate quotes from the UPS Rating API at Delivery Note / Shipment submit, keyed on weight, dimensions, and destination
  • Custom fields for service level, shipping cost, and UPS tracking number persisted directly on the Delivery Note

Request a Quotation

Tell us about your UPS Shipping Connector requirements and we'll send pricing, licensing options and a tailored proposal — usually within one business day.

No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.