Visma and Wise integration
Visma.net ERP manages accounts payable, purchase orders, and supplier invoices. Wise handles international money transfers and multi-currency payouts. Connecting the two automates supplier payments from Visma into cross-border transfers via Wise, eliminating manual bank detail entry and transfer order creation. Approved payments in Visma flow to Wise, where they are executed as transfers to the supplier's registered recipient account, keeping your payment records in sync across both systems.
What moves between them
Approved supplier payments from Visma are polled periodically and mapped to Wise transfer recipients. For each payment, ml-connector retrieves or creates the recipient record in Wise using supplier bank details, obtains a fresh transfer quote for the payment amount and currency, creates a transfer order, and funds it from the appropriate Wise balance. Recipient records are immutable in Wise, so updates require delete and recreation. Transfer state changes and payout failures are tracked via Wise webhook events and logged in the audit trail. The primary flow is unidirectional: Visma to Wise for payment execution.
How ml-connector handles it
ml-connector stores both credential sets encrypted: Visma's OAuth client credentials and tenant_id, and Wise's OAuth tokens or personal API token. For Visma, it refreshes OAuth tokens on expiry and includes the required ipp-company-id header on all list and detail calls. It queries Visma's supplier and payment endpoints using lastModifiedDateTime filters to detect new or modified approved payments. For each payment, it looks up the supplier in Wise's recipient list by matching bank account details; if not found, it creates a new recipient, which is immutable in Wise and persists for future use. Before initiating a transfer, it requests a fresh quote to confirm the exchange rate and fee, then creates the transfer order with customerTransactionId set to Visma's payment reference for idempotency. If the quote expires before funding, ml-connector detects and retries with a fresh quote. It funds the transfer from the Wise balance in the source currency. Wise rate limits and 429 responses trigger exponential backoff. Webhooks from Wise (transfer state changes, payout failures) are verified via RSA-SHA256 signature and logged against the corresponding Visma payment. Every record carries a full audit trail and can be replayed if a downstream call fails.
A real-world example
A Nordic consulting firm uses Visma.net ERP for invoicing and accounts payable, and pays suppliers across Europe, Asia, and the US. Before the integration, the accounting team approved invoices in Visma, exported payment batches weekly, logged into Wise manually, re-entered each supplier's bank details, created a quote for each transfer, selected the correct funding balance, and executed the payout. If a quote expired or a payout failed, manual follow-up was required. With Visma and Wise connected, each week's approved supplier invoices flow automatically into Wise. ml-connector matches suppliers to Wise recipients, generates fresh quotes, and executes the transfers, with every state change logged and accessible for reconciliation. The accounting team now spends minutes reviewing and approving payments in Visma, with execution fully automated.
What you can do
- Automatically execute supplier payments from Visma as transfers via Wise, eliminating manual entry of bank details and payment orders.
- Map Visma supplier records to Wise transfer recipients, creating immutable recipient accounts on first use for future payments.
- Handle Wise transfer creation, quoting, and funding in the correct sequence, with quote expiry detection and refresh.
- Verify Wise webhook events via RSA-SHA256 signature and log transfer state changes and payout failures against the audit trail.
- Authenticate Visma with OAuth 2.0 client credentials and Wise with OAuth 2.0 or personal tokens, refreshing and storing credentials securely.
Questions
- Which direction does data flow between Visma and Wise?
- Supplier payments flow from Visma to Wise for execution. Visma approved invoices and payments are read periodically and mapped to Wise transfers. Wise transfer state changes and payout failures flow back into the audit log for reconciliation. Visma accounts and suppliers are read-only from Wise's perspective.
- How does ml-connector handle Wise recipients and the immutability constraint?
- Wise recipients cannot be updated after creation. ml-connector looks up recipients by bank account details on each payment and reuses existing recipients if found. If a supplier's bank details change in Visma, a new recipient must be created in Wise and linked to future payments. Recipients created by ml-connector persist and are available for all subsequent payments to that supplier.
- What happens if a Wise transfer quote expires before funding?
- Wise transfer quotes expire if not funded within a set time. ml-connector detects quote expiry by checking transfer creation responses, cancels the expired transfer, requests a fresh quote at the current exchange rate, and retries the transfer order and funding. This ensures payments use current rates and fees.
Related integrations
More Visma integrations
Other systems that connect to Wise
Connect Visma and Wise
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started