TallyPrime and UPS integration
TallyPrime runs accounting, inventory, and sales orders for businesses across Asia. UPS handles shipment creation, rating, and tracking. Connecting the two keeps your shipped goods visible in your accounting ledger and ensures every UPS tracking number is recorded against the corresponding sales transaction in TallyPrime. Orders fulfilled in TallyPrime automatically create shipments in UPS, and delivery confirmations flow back into your financial records without manual re-entry.
What moves between them
Sales orders and fulfilled items flow from TallyPrime to UPS. When a sales voucher is marked as shipped in TallyPrime, ml-connector extracts the order details and consignee address, creates a shipment in UPS, retrieves the tracking number, and writes it back into TallyPrime as a linked record or journal memo. Tracking status flows back from UPS via Track Alert webhooks or Quantum View polling, updated in TallyPrime at the voucher level so the accounting team can see shipment status without leaving the ledger.
How ml-connector handles it
ml-connector runs a scheduled polling job that exports sales vouchers from TallyPrime with a date range filter, identifies orders ready to ship, and calls UPS create-shipment endpoints with address validation. The OAuth token is stored encrypted and refreshed before expiry, and rate limits are respected (UPS enforces approximately 250 token requests per day). TallyPrime responses are limited to sequential processing since the desktop application is single-user; ml-connector queues requests to avoid concurrent conflicts. Tracking numbers returned from UPS are stored encrypted as credentials and then written back into TallyPrime via Import Data requests, appended to the sales voucher or a separate shipment receipt voucher. If UPS rate limits trigger or a request fails, ml-connector retries with exponential backoff and logs the full transaction trail so failed shipments can be replayed once the rate limit window clears. Address validation is performed on the consignee before shipment creation to reduce rejections. Company name and username/password for TallyPrime (if required) are stored encrypted per customer.
A real-world example
A mid-sized electronics distributor in Bangalore uses TallyPrime for inventory and sales order management, and ships products across India via UPS. Previously, the fulfillment team printed sales orders from TallyPrime, called UPS to create shipments by hand, noted the tracking numbers on paper, and then manually entered those numbers back into TallyPrime for customer invoices and shipment reports. With TallyPrime and UPS connected, when a warehouse operator marks an order as packed in TallyPrime, ml-connector automatically creates the UPS shipment with the same consignee address and weight from the sales order, retrieves the tracking number, and attaches it to the order. Delivery confirmations from UPS flow back into TallyPrime so the team can see shipment status without leaving the accounting system. The manual re-entry step is eliminated and order fulfillment visibility is immediate.
What you can do
- Automatically create UPS shipments from TallyPrime sales orders, extracting consignee address and package details from the voucher.
- Validate consignee addresses against UPS address validation before creating shipments to reduce rejection and rework.
- Store UPS tracking numbers in TallyPrime as linked records or shipment receipt vouchers for full end-to-end visibility.
- Retrieve tracking status from UPS via Track Alert webhooks or Quantum View polling and update shipment records in TallyPrime.
- Handle OAuth token refresh, sequential request queuing for TallyPrime's single-user constraint, and encrypted credential storage for both systems.
Questions
- How does the integration handle TallyPrime's single-user, local-only constraint?
- ml-connector queues shipment requests sequentially and does not send concurrent calls to TallyPrime's port 9000 server. The local HTTP server must be enabled in TallyPrime Advanced Configuration, and the target company must be open in the application for API calls to succeed. Requests are scheduled at intervals (typically 15 minutes or longer) to avoid blocking the user's interactive work.
- How are UPS OAuth tokens and TallyPrime credentials kept secure?
- Both credential sets are stored encrypted in the ml-connector database using libsodium envelope encryption with a master key per customer cell. UPS OAuth tokens are refreshed before expiry (tokens are valid for approximately 4 hours) and the refresh is tracked so token request quotas are respected. TallyPrime host IP, port, company name, and optional credentials are stored the same way and never logged in plaintext.
- What happens if a UPS rate limit is hit or shipment creation fails?
- ml-connector detects rate limit responses (approximately 250 token requests per day) and backs off with exponential jitter. Failed shipment creation requests are retried automatically on the next polling interval, and the full request/response trail is logged in the audit trail so transactions can be manually replayed if needed. No tracking numbers are duplicated because ml-connector compares against last-seen shipment IDs before re-attempting.
Related integrations
More TallyPrime integrations
Other systems that connect to UPS
Connect TallyPrime and UPS
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started