ml-connector
DeltekStampli

Deltek and Stampli integration

Deltek runs project-based accounting and the general ledger. Stampli runs accounts payable capture, coding, and approval. Connecting the two means the vendor list, chart of accounts, and project dimensions that live in Deltek are mirrored into Stampli so every invoice is coded against real values, and the bills your team approves in Stampli post back into Deltek as AP invoices without re-keying. Because Stampli publishes no public API, ml-connector moves this data as scheduled CSV or XML files over SFTP. The general ledger stays in Deltek, which is the system of record.

How Deltek works

Deltek Vantagepoint exposes firms (vendors and clients), contacts, employees, projects, AP invoices, AR invoices, journal entries, payments, GL accounts, organizations, and accounting codes through REST business document APIs on a tenant-specific deltekfirst.com URL, with the 2026.1 release adding GL transaction endpoints. It authenticates with OAuth 2.0 using the password grant against the company token endpoint, with permissions governed by the API user's role. Deltek Costpoint covers the same finance and procurement entities through SOAP web services and flat-file preprocessor templates. Vantagepoint offers workflow-triggered webhooks but no HMAC signature, while Costpoint is pull-only, so finance records are read by polling.

How Stampli works

Stampli is an accounts payable automation platform, not an ERP, and it does not publish a public REST API for third-party developers. The integration path open without a Stampli partner agreement is file-based exchange: customer-defined CSV or XML templates moved over SFTP or uploaded in the Stampli UI. Stampli imports vendor master, GL accounts, accounting dimensions, and open purchase orders from the ERP, and exports approved invoices and payment status back out. There is no documented public webhook, so new export files are detected by scheduled polling of the outbound SFTP directory. Stampli's own engine runs duplicate detection on invoices before posting.

What moves between them

Master data flows from Deltek into Stampli. ml-connector reads firms marked as vendors, GL accounts, organizations, accounting codes, and projects from Deltek and writes them as import files into Stampli's inbound SFTP path so the coding screen offers only valid values, and where Deltek purchase orders are available it includes open POs for matching. Approved bills flow the other direction: ml-connector polls Stampli's outbound SFTP path for exported invoice files and posts each one into Deltek as an AP invoice against the matching firm, GL account, project, and organization. The general ledger and payment execution stay in Deltek, so ml-connector does not write ledger entries or payment instructions back into Stampli.

How ml-connector handles it

ml-connector stores both credential sets encrypted. On the Deltek side it requests an OAuth2 bearer token with the password grant against the tenant token endpoint, sends it on every REST call, and refreshes it before the roughly one-hour expiry; the API user role must expose every field the integration reads, since hidden fields such as fees return zero rather than an error. On the Stampli side it connects over SFTP, writes master-data files to the inbound directory, and polls the outbound directory on a schedule because Stampli has no public webhook. Vendors and GL accounts are pushed first so each exported bill resolves to a firm and account that already exist in Deltek. Deltek exposes no idempotency key, so ml-connector queries by invoice number before posting and tracks processed file names to avoid double-booking a re-read file. Approval status on the new AP invoice follows the instance configuration, so a bill can land posted or as a draft awaiting Deltek approval. Because file exchange is scheduled batch rather than real-time, latency is measured in the polling window, and every record carries a full audit trail and can be replayed if a Deltek post fails.

A real-world example

A 250-person architecture and engineering firm runs Deltek Vantagepoint for project accounting and the general ledger, and adopted Stampli to speed up invoice approvals across several offices. Before the integration, an accountant exported the approved-bill report from Stampli each week and re-keyed every invoice into Deltek by hand, picking the firm, project, and GL account from memory, which meant bills posted days late and project costs were sometimes coded to the wrong job. With Deltek and Stampli connected, the vendor list, accounts, and project dimensions are mirrored into Stampli so coding is constrained to valid values, and approved bills post back into Deltek automatically against the right project. Invoices reach the ledger within the polling window and the manual re-entry step is gone.

What you can do

  • Push Deltek vendors, GL accounts, organizations, and projects into Stampli so invoices code against valid values.
  • Poll Stampli's outbound SFTP directory and post approved bills into Deltek as AP invoices.
  • Match each Stampli invoice to the correct Deltek firm, project, and GL account before posting.
  • Authenticate Deltek with OAuth2 password grant against its tenant URL, and Stampli over SFTP.
  • Dedupe on invoice number and processed file names, with retries and a full audit trail on every record.

Questions

Which direction does data move between Deltek and Stampli?
Master data moves from Deltek into Stampli, and approved invoices move from Stampli back into Deltek. ml-connector pushes vendors, GL accounts, organizations, and projects into Stampli so invoices are coded correctly, then posts the bills your team approves in Stampli into Deltek as AP invoices. The general ledger and payment execution stay in Deltek, so no ledger entries are written back into Stampli.
Why does the integration use files over SFTP instead of a direct API?
Stampli does not publish a public REST API for third-party developers, so the only path open without a Stampli partner agreement is file-based exchange. ml-connector writes customer-defined CSV or XML import files to Stampli's inbound SFTP directory and reads exported invoice files from the outbound directory. Because there is no public webhook, it polls the outbound directory on a schedule to pick up new files.
How does the integration avoid posting the same invoice to Deltek twice?
Deltek's REST API has no idempotency key header, so duplicate prevention is the caller's job. ml-connector queries Deltek by invoice number before creating an AP invoice and tracks the file names it has already processed, so re-reading a file does not double-book a bill. Stampli's own engine also runs duplicate detection before it exports an invoice.

Related integrations

Connect Deltek and Stampli

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

Get started