Add Tax ID to client webhooks + complete invoicing/payment webhooks (optional native accounting integration)

Upmind’s current client webhooks don’t include tax_id and there’s limited coverage of invoicing/payment events. Please expand webhook payloads and events to enable reliable accounting sync (e.g., with tools like Holded). This reduces extra API calls, lowers errors, and improves tax compliance.

Feature Request
Expand client webhook payloads (clients.registered, clients.updated, clients.address.updated) to include: tax_id, tax_id_type (e.g., vat/cif/nif/ein), tax_country (ISO), tax_exempt, tax_exempt_code, tax_exempt_number, legal_name/company_name, billing_currency (ISO 4217), billing_email, default_payment_terms, normalized address, phone (optional), language (ISO 639-1), metadata/custom_fields, created_at, updated_at. New accounting events: clients.tax.updated; invoices.created (draft), invoices.finalized/issued, invoices.cancelled/voided; credit_notes.created; payments.captured, payments.refunded; subscriptions.created|updated|cancelled. Minimum fields for invoices/payments: identifiers (tenant_id, invoice_id, invoice_number), dates, status, currency/exchange rate, totals (subtotal/tax/total/paid/balance), client block (client_id, client_tax_id, client_legal_name, client_country), items (sku, description, quantity, unit_price, discount, tax_rate, tax_code), pdf_url (if applicable), applied payments[]/credit_notes[]. Delivery & DX: HMAC-SHA256 signature + timestamp, idempotency event ID, retries with backoff, payload versioning, field selection per webhook, and test fire from the admin.
How Would You Use This in Upmind?
Client sync: On clients.registered/updated (or clients.tax.updated), our automation upserts the contact in our accounting system using client_id as the stable key while mapping tax_id and fiscal fields—no extra API fetch needed. Invoice sync: On invoices.finalized/issued, we create the invoice in the accounting tool with line items, taxes, discounts, and link back to the PDF. Payment sync: On payments.captured/refunded, we reconcile payments and refunds automatically. This enables an end-to-end flow (client → invoice → payment) using webhooks only, or via n8n/ETL with minimal API lookups.
What problem does this solve for you?
Missing tax_id in client webhooks forces an extra API request after every event, increasing latency, rate-limit pressure, and risk of race conditions or mismatched data. Incomplete invoicing coverage hampers real-time accounting, requiring manual reconciliation and creating compliance risks in strict tax jurisdictions. The result is slower billing, higher operational load, and more chances for human error.
Impact of not having this feature
Operational: Extra engineering to orchestrate API lookups; brittle workflows; slower posting of invoices and payments. Compliance: Higher risk of incorrect tax data syncing and audit trail gaps. Business: Delays in revenue recognition, cash allocation, and financial reporting; reduced scalability as sales volume grows.

Please authenticate to join the conversation.

Upvoters
Status

Suggested

Board

Billing and Invoicing

Date

6 months ago

Author

Gerardo

Subscribe to post

Get notified by email when there are changes.