Used to verify webhook payloads are genuinely from Zuora. Set this as the shared secret in your callout configuration.
HMAC Verification: GoRoute verifies every inbound webhook using HMAC-SHA256. Zuora signs each callout payload with this shared secret and includes the signature in the X-Zuora-Signature header. GoRoute recomputes the HMAC and rejects any request where the signature does not match — preventing spoofed or tampered payloads from being processed.
••••••••••••••••••••••••••••••••
3
Configure Zuora Notification Callout
a.Go to Zuora → Platform → Notifications → Notification Definitions
b.Click + Add New Notification, set Event Type to Invoice Posted
c.Under Callout, select Active, method POST, Content-Type application/json
d.Paste the webhook URL from Step 1 into the Callout Base URL field
e.In the request body, use Zuora merge fields to include full invoice + line items + account data
f.Save and activate the notification — GoRoute converts JSON → UBL 2.1 → validates → delivers via AS4
Production Architecture: Trigger + Fetch
In production, GoRoute treats the webhook as a trigger signal, not the sole data source. When a callout arrives, GoRoute:
Authenticates the webhook (HMAC verification)
Deduplicates the event (idempotency check on invoice ID)
Uses the Zuora REST API to fetch the full invoice object — including line items, taxation items, account details, legal entity, and buyer identifiers
Maps the enriched data into compliant UBL 2.1 / Peppol BIS 3.0
Validates, delivers via AS4, and archives evidence
Why? Peppol/UBL compliance requires more structured data than a lightweight webhook payload alone. The webhook triggers processing; the Zuora API provides the full source of truth.
4
Required Event Subscriptions
Invoice Posted
Primary — triggers UBL conversion + AS4 delivery. Use this over "Invoice Created" — posted invoices are finalized billing documents.
Credit Memo Posted
Optional — sends Peppol credit notes
Notification Filters: Zuora supports filters on notification definitions. You can scope events by entity, business unit, invoice amount, account segment, or custom logic. Use filters to send only relevant invoices to GoRoute — e.g., filter by country = OM for Oman-only compliance, or by amount threshold for phased rollout.
5
Verify Connection
Send a test event to confirm the webhook is configured correctly.
Fallback: Polling Mode — If your environment cannot receive inbound webhooks, GoRoute supports a polling fallback where it queries the Zuora API using object queries and a updatedDate high-water mark. Webhook/callout is the recommended primary pattern; polling should be used only when webhooks are not possible. Contact support to enable polling mode.
Status
Waiting for events
Environment
Test (Sandbox)
Last Event
—
Events Processed
0
Last Successful Sync
—
Failed Events
0
Recent Events
Timestamp
Invoice
Status
Validation
Actions
No events received yet. Complete setup and post an invoice in Zuora, or use Send Test Event to verify.
Zuora → UBL 2.1 Field Mappings
Default transformation rules applied during conversion. Overrides per field coming soon.
Zuora Field
→
UBL Element
Notes
InvoiceNumber
→
cbc:ID
Invoice identifier
InvoiceDate
→
cbc:IssueDate
YYYY-MM-DD
DueDate
→
cbc:DueDate
Payment due date
Currency
→
cbc:DocumentCurrencyCode
Passed through from Zuora as-is/td>
Account.PeppolId
→
cac:AccountingCustomerParty
Receiver endpoint (scheme:id)
Amount
→
cac:LegalMonetaryTotal
TaxExclusiveAmount + TaxInclusiveAmount
TaxAmount
→
cac:TaxTotal/cbc:TaxAmount
Total tax
InvoiceItems[].ChargeAmount
→
cac:InvoiceLine/cbc:LineExtensionAmount
Per-line net amount
TaxationItems[].TaxRate
→
cac:TaxCategory/cbc:Percent
VAT rate (e.g. 5%)
BillToContact.*
→
cac:PostalAddress
Street, city, postal code, country
Oman-Specific Compliance Notes
Zuora invoices are passed through in their billing currency. When auto-convert is enabled and the receiver's jurisdiction requires a different currency (e.g., OMR for Oman), GoRoute converts amounts using live Central Bank exchange rates at invoice time. GoRoute validates that the 5% VAT rate matches Oman's standard rate and that tax amounts are mathematically consistent with line totals
VAT Registration
Oman VAT numbers use the 9959 participant identifier scheme. GoRoute validates that the supplier VAT number (e.g., OM3100209729) is present and correctly formatted in cac:AccountingSupplierParty.
B2B vs B2C Determination
GoRoute checks whether the buyer has a VAT/Tax number. If Account.TaxNumber is blank, GoRoute classifies the transaction as B2C and applies appropriate CIUS rules. B2B invoices require a buyer identifier and may need a Peppol endpoint ID for network delivery.
Currency & Tax Handling
Zuora invoices are passed through in their billing currency. When auto-convert is enabled and the receiver's jurisdiction requires a different currency (e.g., OMR for Oman), GoRoute converts amounts using live Central Bank exchange rates at invoice time. GoRoute validates that the 5% VAT rate matches Oman's standard rate and that tax amounts are mathematically consistent with line totals.
Compliance Channels
GoRoute routes Oman invoices to the appropriate channel: Peppol AS4 for network-registered recipients, tax authority reporting when required by Oman regulations, and PDF + UBL archive for audit evidence. GoRoute does not replace the billing system's customer-facing PDF — it generates the structured compliance artifact alongside it.
a.Click Connect with QuickBooks below to authorize GoRoute via OAuth 2.0
b.Sign in to your Intuit account and select the company file to connect
c.Grant GoRoute read access to Invoices, Customers, and Company Info
d.GoRoute stores an encrypted refresh token — re-authorization is automatic
2
Webhook Endpoint
Intuit sends real-time notifications when invoices are created or updated.
POST/connectors/quickbooks/webhook/quickbooks
Configure this URL in Intuit Developer Portal → Webhooks. Select Invoice and CreditMemo entity events. The connector verifies the intuit-signature header via HMAC-SHA256.
3
Verifier Token
HMAC-SHA256 Verification: Intuit signs each webhook payload with this verifier token. GoRoute validates the intuit-signature header to ensure authenticity and reject tampered requests.
••••••••••••••••••••••••••••••••
What GoRoute Handles
QuickBooks JSON → UBL 2.1 conversion
Schematron validation (EN16931 + BIS)
AS4 delivery via Peppol network
OAuth token refresh & retry logic
4
Verify Connection
Send a test QuickBooks invoice through the GoRoute pipeline.
Status
Waiting for events
Platform
QuickBooks Online
Last Event
—
Events Processed
0
Last Successful Sync
—
Failed Events
0
Recent Events
Timestamp
Invoice
Status
Validation
Actions
No events received yet. Complete setup and create an invoice in QuickBooks, or use Send Test Event to verify.
QuickBooks → UBL 2.1 Field Mappings
Default transformation rules applied when converting QuickBooks invoices to Peppol BIS 3.0.
QuickBooks Field
→
UBL Element
Notes
DocNumber
→
cbc:ID
Invoice number
TxnDate
→
cbc:IssueDate
YYYY-MM-DD
DueDate
→
cbc:DueDate
Payment due date
CurrencyRef.value
→
cbc:DocumentCurrencyCode
ISO 4217 currency
CustomerRef
→
cac:AccountingCustomerParty
Customer lookup via API
TotalAmt
→
cac:LegalMonetaryTotal
Tax-inclusive total
TxnTaxDetail.TotalTax
→
cac:TaxTotal/cbc:TaxAmount
Total tax amount
Line[].Amount
→
cac:InvoiceLine/cbc:LineExtensionAmount
Line net amount
Line[].SalesItemLineDetail
→
cac:Item/cbc:Name
Item description
BillAddr.*
→
cac:PostalAddress
Street, city, postal, country
X
Xero
Waiting for first event
Accounting · OAuth 2.0 · Webhook integration
1
Connect Xero Organisation
a.Click Connect with Xero below to authorize GoRoute via OAuth 2.0 (PKCE)
b.Sign in to your Xero account and select the organisation to connect
c.Grant GoRoute read access to Invoices, Contacts, and Organisation scopes
d.GoRoute handles token refresh automatically — connections persist until revoked
2
Webhook Endpoint
Xero fires notifications when invoices are created, updated, or approved.
POST/connectors/xero/webhook/xero
Configure in Xero Developer Portal → Webhooks. GoRoute responds to the Intent to Receive validation automatically. Payloads are verified via x-xero-signature HMAC-SHA256.
3
Webhook Signing Key
HMAC-SHA256 Verification: Xero signs each webhook with the key displayed below. GoRoute verifies the x-xero-signature header to ensure payload authenticity.
••••••••••••••••••••••••••••••••
What GoRoute Handles
Xero JSON → UBL 2.1 conversion
Schematron validation (EN16931 + BIS)
AS4 delivery via Peppol network
Multi-org tenant isolation
4
Verify Connection
Send a test Xero invoice through the GoRoute pipeline.
Status
Waiting for events
Platform
Xero
Last Event
—
Events Processed
0
Last Successful Sync
—
Failed Events
0
Recent Events
Timestamp
Invoice
Status
Validation
Actions
No events received yet. Complete setup and approve an invoice in Xero, or use Send Test Event to verify.
Xero → UBL 2.1 Field Mappings
Default transformation rules applied when converting Xero invoices to Peppol BIS 3.0.
Xero Field
→
UBL Element
Notes
InvoiceNumber
→
cbc:ID
Invoice identifier
Date
→
cbc:IssueDate
YYYY-MM-DD
DueDate
→
cbc:DueDate
Payment due date
CurrencyCode
→
cbc:DocumentCurrencyCode
ISO 4217 currency
Contact
→
cac:AccountingCustomerParty
Contact name + tax number
Total
→
cac:LegalMonetaryTotal
Tax-inclusive total
TotalTax
→
cac:TaxTotal/cbc:TaxAmount
Total tax amount
LineItems[].LineAmount
→
cac:InvoiceLine/cbc:LineExtensionAmount
Line net amount
LineItems[].TaxType
→
cac:TaxCategory/cbc:Percent
Tax rate from tax type lookup
Contact.Addresses[0]
→
cac:PostalAddress
Street, city, postal, country
Odoo
Odoo
Waiting for first event
Invoicing · Accounting · XML-RPC / REST API
Choose Integration Method
1
Odoo Connection Details
GoRoute uses these credentials to call account.move via XML-RPC. Credentials are encrypted at rest.
2
Polling Configuration
a.GoRoute polls Odoo every 5 minutes for newly posted invoices (state = 'posted')
b.Uses a high-water mark on write_date to pick up only new/changed records
c.Fetches invoice lines, partner data, and tax details in a single batch call
d.Converts to Peppol BIS 3.0 UBL, validates, and delivers via AS4
1
Webhook Endpoint
Configure Odoo's automated action to POST invoice data to GoRoute on validation.
POST/connectors/odoo/goroute/webhook/status
2
Install GoRoute Module
a.Download the goroute_peppol module from Settings → Apps
b.Configure the GoRoute API key in Odoo Settings → Peppol Integration
c.The module creates an Automated Action on account.move validation that POSTs to GoRoute
d.Each invoice is sent as JSON with partner, tax, and line-item data
What GoRoute Handles
Odoo account.move → UBL 2.1 conversion
Schematron validation (EN16931 + BIS)
AS4 delivery via Peppol network
Multi-company & multi-currency support
3
Verify Connection
Send a test Odoo invoice through the GoRoute pipeline.
Status
Waiting for events
Platform
Odoo 17+
Last Event
—
Events Processed
0
Last Successful Sync
—
Failed Events
0
Recent Events
Timestamp
Invoice
Status
Validation
Actions
No events received yet. Complete setup and post an invoice in Odoo, or use Send Test Event to verify.
Odoo → UBL 2.1 Field Mappings
Default transformation rules applied when converting Odoo invoices to Peppol BIS 3.0.
Odoo Field
→
UBL Element
Notes
name
→
cbc:ID
Invoice number (e.g., INV/2026/0001)
invoice_date
→
cbc:IssueDate
YYYY-MM-DD
invoice_date_due
→
cbc:DueDate
Payment due date
currency_id.name
→
cbc:DocumentCurrencyCode
ISO 4217 currency
partner_id
→
cac:AccountingCustomerParty
Partner name + VAT number
amount_total
→
cac:LegalMonetaryTotal
Tax-inclusive total
amount_tax
→
cac:TaxTotal/cbc:TaxAmount
Total tax amount
invoice_line_ids[].price_subtotal
→
cac:InvoiceLine/cbc:LineExtensionAmount
Line net amount
invoice_line_ids[].tax_ids
→
cac:TaxCategory/cbc:Percent
Tax rate from account.tax
partner_id.street/city/zip/country
→
cac:PostalAddress
Partner address fields
More Connectors
SAP
SAP
Coming Soon
S/4HANA · Business One · IDoc/BAPI
ORC
Oracle / NetSuite
Coming Soon
SuiteScript · Cloud ERP · Multi-subsidiary
MS
Microsoft Dynamics 365
Coming Soon
Business Central · Finance · Power Automate
How Connectors Work
1
Billing System
Invoice posted in Zuora / ERP
2
Webhook Fires
Invoice payload sent to GoRoute endpoint
3
Convert & Validate
Mapped to Peppol BIS 3.0 UBL, Schematron validated
Delivered via Peppol
AS4 message sent, receipt confirmed
API & ERP Integrations
Connect your ERP system to GoRoute.ai Peppol for automated document exchange
Pre-Built Connectors Available
Zuora connector is live! Send invoices with one click — no coding needed.
GoRoute.ai Peppol provides a comprehensive REST API for seamless integration with any ERP system. Send invoices, receive documents, and manage participants programmatically.
This participant is not registered on the Peppol network.
Check the identifier and scheme, or the participant may not be Peppol-enabled.
Send Test Document
Verify your Peppol configuration by sending a test document
Test Your Configuration
This sends a sample invoice through the Peppol production network. Use this to verify your SMP registration and AS4 endpoint are correctly configured.
Test Configuration
Loading...
✓ Registered
Loopback Test
This test sends a document to your own Peppol ID to verify your complete configuration:
SMP registration, AS4 gateway, document validation, and webhook delivery.
A pre-configured sample document will be sent
Test documents are clearly marked and won't affect production
Recent Test Results
No test documents sent yet
Send a test document to verify your configuration
API Keys
Configure your API key for document exchange
Your API Key
The API key you save here is used for all dashboard features including CSV Import, Transactions, and programmatic API access via the X-API-Key header.
Get notified when documents are delivered or received
Webhook Integration Guide
What are Webhooks?
Webhooks are automated HTTP POST requests that GoRoute sends to your server when events occur. Instead of polling our API, you get instant notifications when invoices are delivered, received, or fail.
Available Events
transaction.delivered
Fires when your outgoing invoice is successfully delivered to the recipient's Peppol Access Point.
transaction.failed
Fires when invoice delivery fails (validation error, recipient not found, network issue).
transaction.received
Fires when you receive an incoming invoice from another Peppol participant.
Setup Steps
1
Create an HTTPS endpoint on your server
Your endpoint must accept POST requests and return a 2xx status code.
2
Register your webhook URL here
Click "Add Webhook", enter your URL, and select which events to subscribe to.
3
Save your webhook secret
Copy the whsec_... secret shown after creation. Use it to verify webhook signatures.
4
Test your webhook
Click the "Test" button to send a test.ping event and verify your endpoint is working.