Visma and ServiceNow integration
Visma runs your general ledger and supplier master. ServiceNow handles accounts payable and procurement. Connecting them moves invoices from Visma into ServiceNow's AP processing queue automatically, so the invoice data is always current and cost center allocations are validated before they reach AP. Invoices posted through the integration arrive with full audit trails and can be replayed if a downstream posting fails.
What moves between them
Supplier invoices and supplier master records flow from Visma into ServiceNow's Accounts Payable staging tables (sn_apo_invoice, sn_s2p_supplier_inbound_staging). ml-connector polls Visma for new and updated supplier invoices using the lastModifiedDateTime parameter, and posts them into ServiceNow's staging layer where ServiceNow's Accounts Payable module ingests and validates them for posting to the general ledger. Cost centers and general ledger account dimensions from Visma are mapped to ServiceNow's cmn_cost_center and itfm_gl_accounts before staging, ensuring every invoice lands on a valid account. The sync runs on a daily or weekly schedule depending on your invoice volume and AP close calendar.
How ml-connector handles it
ml-connector stores both Visma and ServiceNow credentials encrypted, and uses Visma Connect OAuth to obtain a bearer token on each sync run (refresh tokens are not issued to service applications, so a new token is fetched when the prior one expires). On the Visma side, it queries supplier invoices with a lastModifiedDateTime filter to pull only new and changed records since the last run, and it includes the ipp-company-id header on every call. On the ServiceNow side, it connects to the customer's instance subdomain and uses OAuth 2.0 client credentials (or Basic Auth if configured) to authenticate, then stages the invoice data into the Accounts Payable and Source-to-Pay staging tables with cost center and account mappings already resolved. Because ServiceNow has no native outbound webhook system for connectors, ml-connector polls on a fixed schedule rather than waiting for a push. Every invoice staged carries a full audit trail showing when it arrived, which records were mapped, and any validation failures, so failed invoices can be corrected and replayed without re-sending the entire batch.
A real-world example
A mid-sized professional services firm runs Visma as its general ledger and supplier master across multiple departments, and uses ServiceNow's Accounts Payable module for invoice processing and cost allocation. Before the integration, the finance team exported supplier invoices from Visma daily and manually loaded them into ServiceNow's staging table, with each upload requiring verification that the cost center and GL account mappings matched Visma's chart of accounts. With Visma and ServiceNow connected, invoices flow automatically each night during the off-hours sync window, cost centers are validated against the Visma master before staging, and the finance team spends no time on manual uploads or reconciliation.
What you can do
- Poll supplier invoices from Visma and stage them into ServiceNow Accounts Payable with cost center and GL account mappings pre-validated.
- Refresh Visma OAuth tokens automatically and handle per-company authentication with the required ipp-company-id header.
- Route all ServiceNow API calls to the customer-supplied instance subdomain and manage OAuth 2.0 or Basic Auth per deployment.
- Maintain a full audit trail of every invoice ingested, mapped, and staged, with the ability to replay failed records.
- Sync on a schedule tied to your AP close calendar or invoice receipt cadence, with exponential backoff retries on transient errors.
Questions
- Does ml-connector support ServiceNow's Source-to-Pay staging tables for Accounts Payable?
- Yes. ml-connector stages invoices into ServiceNow's sn_apo_invoice and sn_s2p_supplier_inbound_staging tables, which are part of the Source-to-Pay Operations module license. Your ServiceNow instance must have the APO and Procurement modules enabled, and your OAuth service account must have the sn_apay.apo_user role to write to those tables. The integration handles the mapping and validation before staging.
- How does ml-connector handle Visma's company-level OAuth and per-company authentication?
- Visma requires the ipp-company-id header on every API call to identify which company's data to return. ml-connector obtains a single OAuth 2.0 bearer token using your Visma client credentials and tenant_id, then includes the ipp-company-id header on all supplier and invoice queries. If you have multiple Visma companies, you can configure separate ml-connector flows for each company, each with its own ipp-company-id.
- Does the integration push invoices to ServiceNow in real time or on a schedule?
- ServiceNow has no native webhook registration system for connectors, so ml-connector polls Visma on a fixed schedule (typically daily or weekly) and stages the results into ServiceNow's AP tables. The schedule is configurable and can be aligned with your AP close calendar or invoice receipt patterns. Every poll uses a lastModifiedDateTime filter to fetch only new and changed invoices since the previous run, minimizing data transfer and API calls.
Related integrations
More Visma integrations
Other systems that connect to ServiceNow
Connect Visma and ServiceNow
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started