ml-connector
Wave AccountingPayPal

Wave Accounting and PayPal integration

Wave Accounting keeps your books straight. PayPal processes your payments. Connecting the two means invoices you create in Wave flow to PayPal automatically, and payments received through PayPal post back to Wave as transactions without manual re-entry. Wave Accounting handles the bookkeeping side while PayPal handles the payment processing, and ml-connector keeps both systems synchronized on a schedule you control.

How Wave Accounting works

Wave Accounting exposes invoices, customers, transactions, accounts, products, and vendors through a GraphQL API at https://gql.waveapps.com/graphql/public. Authentication uses OAuth 2.0 Authorization Code Flow with 2-hour access tokens and refresh tokens (offline_access scope required). Wave publishes webhooks for invoice.created, invoice.updated, invoice.paid, payment.created, customer.created, customer.updated, transaction.created, product.created, and product.updated events. Webhook signatures are verified with HMAC-SHA256 and include a 5-minute replay window. The connected Wave account must have a Pro subscription, and invoices can be created, approved, sent, or deleted but not patched after creation.

How PayPal works

PayPal exposes orders, captures, refunds, invoices, transactions, subscriptions, and payouts through REST APIs at https://api-m.paypal.com (production) and https://api-m.sandbox.paypal.com (sandbox). Authentication uses OAuth 2.0 Client Credentials, with tokens cached and reused for approximately 8 hours. PayPal publishes push webhooks (HTTPS POST) with retry capability up to 25 times over 3 days for non-2xx responses. Webhook signatures are verified with RSA-SHA256 via the paypal-transmission-sig header. Transaction search is limited to a 31-day window with a maximum of 500 results per page. Invoices must be sent through a dedicated endpoint to notify recipients.

What moves between them

Invoices flow from Wave Accounting to PayPal. When an invoice is created or updated in Wave, ml-connector sends it to PayPal's invoice endpoint so customers see a consistent bill. Payments and transactions flow from PayPal back to Wave. When a payment is captured or a transaction completes in PayPal, ml-connector records it as a Wave transaction linked to the matching Wave customer, reconciling the two books at each sync point.

How ml-connector handles it

ml-connector stores both OAuth 2.0 credential sets encrypted and manages token refresh on both sides independently, since Wave uses Authorization Code Flow and PayPal uses Client Credentials. Wave Accounting webhooks deliver invoice and payment events in real time, and ml-connector verifies each signature with HMAC-SHA256 before processing. PayPal webhooks deliver payment events via RSA-SHA256 signature verification. For reconciliation, ml-connector matches Wave customers to PayPal customer records and tracks which Wave invoices have been sent to PayPal to avoid duplicates. Transaction search in PayPal is polled on a schedule since the 31-day window moves forward, and payment amounts are reconciled against Wave invoice totals to flag mismatches. Because Wave invoices cannot be patched after creation, corrections flow through Wave's approve-send-delete process, and PayPal invoice amendments are tracked separately to maintain audit integrity.

A real-world example

A small business uses Wave Accounting to manage invoicing and bookkeeping, and accepts payments through PayPal from customers worldwide. Before the integration, the owner created invoices in Wave, manually sent them via PayPal's invoicing tool, and spent hours each week entering PayPal transactions back into Wave's books, often missing small payments or recording them in the wrong month. With Wave Accounting and PayPal connected, invoices created in Wave automatically sync to PayPal customers, payments received through PayPal post directly to Wave as transactions, and the cash flow report in Wave stays current without manual work. The owner can see at a glance which invoices have been paid via PayPal and which are still outstanding.

What you can do

  • Send Wave Accounting invoices to PayPal automatically so customers see a consistent bill across both systems.
  • Sync PayPal payments and transactions back to Wave Accounting as customer payment records for instant reconciliation.
  • Map Wave customers to PayPal customer records and match them on every invoice send so customer data stays aligned.
  • Verify Wave webhook signatures with HMAC-SHA256 and PayPal webhook signatures with RSA-SHA256, and handle token refresh on both OAuth 2.0 flows independently.
  • Poll PayPal transaction history on a schedule within the 31-day search window, reconcile amounts against Wave invoices, and flag payment mismatches for review.

Questions

Which direction does data move between Wave Accounting and PayPal?
Invoices flow from Wave Accounting to PayPal so customers see a consistent bill in both places. Payments and transactions flow from PayPal back to Wave Accounting so your books reflect incoming payments without manual re-entry. Wave customers are synced to PayPal customers so each invoice send matches the right customer in both systems.
How does the integration handle Wave Accounting's OAuth 2.0 flow and PayPal's client credentials separately?
ml-connector manages two independent OAuth 2.0 flows: Wave uses Authorization Code Flow with refresh tokens, and PayPal uses Client Credentials. ml-connector caches and refreshes tokens separately for each system, so the two authentication streams never interfere. When a Wave token expires, ml-connector refreshes it; when a PayPal token expires, ml-connector refreshes it without affecting Wave.
What happens when Wave invoices are updated or deleted after being sent to PayPal?
Wave invoices cannot be patched after creation, so updates flow through Wave's built-in approve-send-delete workflow. When a Wave invoice is deleted or superseded, ml-connector tracks the change separately in its audit log and can mark the corresponding PayPal invoice as void or cancelled if needed. Each action is logged so you have a complete history of which Wave invoice maps to which PayPal invoice state.

Related integrations

Connect Wave Accounting and PayPal

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

Get started