Skip to main content

Wave integration

Manage Wave Accounting customers, invoices, and bills on behalf of your clients without leaving TaskJuice.

What it does

The Wave integration lets your agency run accounting operations on behalf of your clients without leaving TaskJuice. Connect a client's Wave business once and you can create customers, draft invoices, record bills, list invoices and customers, and pull the product catalog. Two polling triggers watch a connected business for newly created invoices and customers so you can chain Wave activity into the rest of your workflow.

Connect a Wave account

  1. Open your workspace in TaskJuice and navigate to Connections.
  2. Choose Wave and click Connect.
  3. Sign in to the Wave account that should authorize the connection and approve the requested scopes (business read, customer read and write, invoice read and write, product read and write, account read).
  4. After Wave returns you to TaskJuice, paste the Wave business ID for the organization you want to operate on. You can list authorized businesses by issuing the businesses GraphQL query against https://gql.waveapps.com/graphql/public with the access token.

Wave issues a refresh token alongside the access token, so a single authorization can be refreshed indefinitely until the user revokes it from the Wave developer portal. See the Wave API Authentication guide for the full grant flow.

Triggers

  • wave/new-invoice polls a connected Wave business for newly created invoices and emits one activation per poll cycle containing every new invoice observed. Drop a Loop node downstream to process each invoice individually.
  • wave/new-customer polls a connected Wave business for newly created customers and emits one activation per poll cycle containing every new customer observed.

Wave does not publish a webhook surface, so the integration uses polling against the GraphQL API. Each cycle uses the connection's stored business ID by default, which keeps the configuration aligned with how Wave models data (one business per ID, many businesses per authorizing user).

Actions

  • wave/create-customer creates a new customer in the connected Wave business.
  • wave/create-invoice creates a new invoice for an existing customer with one or more line items.
  • wave/create-bill records a new bill (vendor invoice) against a vendor in the connected business.
  • wave/list-customers lists customers in the connected business with page-based pagination.
  • wave/list-invoices lists invoices in the connected business, with optional status filtering.
  • wave/list-products lists products and services configured in the connected business.

All actions issue a single POST to https://gql.waveapps.com/graphql/public and pass the connection's business ID through the GraphQL variables.

Known limitations

  • Wave exposes a single GraphQL endpoint, so the rate limit budget is shared across read and write traffic from the same connection. The platform returns HTTP 429 with a Retry-After hint when the budget is exhausted, which TaskJuice surfaces as a retryable error.
  • The integration operates on one Wave business per connection. To work across multiple businesses, create a separate connection for each business ID and select the connection at workflow author time.
  • Wave does not offer outbound webhooks. Polling triggers fetch one page per cycle; for very large customer or invoice histories, increase the configured Max Per Cycle value or rely on a downstream filter to deduplicate against your own state.
  • Wave personal access tokens are deprecated for new apps. Use the OAuth flow, which issues an app-scoped access token plus a refresh token tied to the authorizing user.
Was this helpful?
Wave integration | TaskJuice Docs