ml-connector
Wave AccountingUPS

Wave Accounting and UPS integration

Wave Accounting tracks your invoices and customers. UPS handles your shipments and tracking. Connecting the two keeps your orders moving and your customer records in sync. When you create an invoice in Wave, ml-connector can validate customer addresses against UPS data and seed shipments without re-entering data. UPS tracking events flow back into Wave so you have a complete audit trail of what was shipped, when, and where it went.

How Wave Accounting works

Wave Accounting exposes invoices, customers, products, accounts, transactions, and vendors through a GraphQL API at https://gql.waveapps.com/graphql/public, using OAuth 2.0 with access tokens valid for 2 hours and refresh tokens for long-lived sessions. The connected business must have an active Wave Pro subscription. Wave publishes webhooks for invoice creation, updates, and payment, as well as customer and transaction events. The API requires HMAC-SHA256 webhook signature verification with a 5 minute replay window. Bills and AP are not exposed, and invoices are created or deleted but not patched.

How UPS works

UPS exposes shipment creation, rating, tracking, address validation, and pickup scheduling through REST JSON APIs at https://onlinetools.ups.com/api, authenticated with OAuth 2.0 client credentials and an optional 6-digit UPS account number in the x-merchant-id header. Tokens expire after approximately 4 hours, with a rate limit of about 250 token requests per day. UPS offers Track Alert webhooks for up to 100 tracking numbers per subscription, valid for 14 days and renewable, and Quantum View polling for shipment visibility feeds. Address validation, rating, and shipment creation are write operations. UPS has no billing or invoice API.

What moves between them

Customer addresses from Wave invoices flow into UPS address validation to catch delivery errors early. When Wave invoices are approved or sent, ml-connector can create UPS shipments with the customer address and line item details. UPS tracking events are pulled via Track Alert webhooks or Quantum View polling and stored in Wave audit records. The flow is primarily one-way from Wave into UPS for shipment creation, with tracking data flowing back for customer visibility.

How ml-connector handles it

ml-connector stores Wave OAuth access and refresh tokens encrypted, and renews them when a GraphQL call returns a 401. For UPS, it holds the client credentials encrypted, obtains bearer tokens from the UPS security endpoint, and includes the optional merchant ID header if configured. When a Wave invoice is created or sent, ml-connector extracts the customer address, validates it against the UPS address validation API, and creates a shipment if the address is valid. UPS Track Alert subscriptions require 14-day renewal, so ml-connector renews them before they expire to avoid outages. If address validation fails, the record is flagged for manual review. Wave does not support invoice patching, so shipment references are stored in Wave transaction notes or custom fields via separate API calls. Every shipment and tracking event carries an audit trail and can be replayed if a call fails.

A real-world example

A small e-commerce seller uses Wave Accounting to manage customer invoices and monthly bookkeeping, and ships orders via UPS. Before the integration, the fulfillment team printed invoices from Wave, manually typed customer addresses into the UPS web interface, created shipments, and then manually logged tracking numbers back into Wave spreadsheets. The finance team had no visibility into what had shipped. With Wave and UPS connected, each Wave invoice triggers a UPS shipment with automatic address validation, and tracking events flow back into Wave automatically. The fulfillment team spends less time on data entry, the finance team sees the complete order-to-shipment pipeline, and customer addresses are validated before a label is printed.

What you can do

  • Validate customer addresses from Wave invoices against UPS data before creating a shipment.
  • Create UPS shipments automatically when Wave invoices are approved or sent, with line item and customer data from the invoice.
  • Sync UPS tracking events back into Wave audit records and customer timelines for complete order visibility.
  • Manage OAuth 2.0 tokens on both Wave and UPS sides, with automatic refresh when tokens expire.
  • Flag address validation errors for manual review and retry failed shipment creation calls with backoff.

Questions

Which direction does data move between Wave Accounting and UPS?
The primary flow is from Wave into UPS. Customer addresses and line items from Wave invoices are used to validate addresses and create UPS shipments. Tracking events and shipment status flow back from UPS into Wave for audit records and customer visibility. UPS has no invoice API, so no financial data moves back into Wave.
What happens if a customer address in Wave fails UPS validation?
ml-connector flags the record for manual review and does not create the shipment until the address is corrected in Wave. The customer can be contacted via Wave to verify or update their address, and the shipment attempt can be retried once the address is valid.
How does ml-connector handle UPS Track Alert subscriptions and token renewal?
UPS Track Alert subscriptions expire after 14 days and must be renewed. ml-connector renews them automatically before expiry to avoid losing tracking data. Wave and UPS OAuth tokens are refreshed when calls return 401, and the UPS client credentials token is obtained fresh from the security endpoint before expiry.

Related integrations

Connect Wave Accounting and UPS

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started