Deltek and GoCardless integration
Deltek Vantagepoint runs project accounting, billing, and the general ledger. GoCardless collects money from customer bank accounts by direct debit and ACH. Connecting the two turns open AR invoices in Deltek into bank-debit collections in GoCardless, then brings the settled cash back into Deltek as cash receipts against the right client and project. ml-connector handles the different APIs and auth on each side and reconciles each GoCardless payout to the payments inside it so the ledger matches the bank.
What moves between them
The outbound flow runs from Deltek into GoCardless. ml-connector reads open AR invoices from Deltek Vantagepoint, matches each client firm to a GoCardless customer with an active mandate, and creates a payment for the invoice amount in the smallest currency unit on a schedule you set. The return flow runs from GoCardless into Deltek. As payments are confirmed and bundled into payouts, ml-connector posts a cash receipt into Deltek against the originating client and project and marks the invoice paid. Payouts are read-only in GoCardless, so ml-connector never writes financial entries back, it only reads payout items to reconcile each payout to its underlying payments, fees, and refunds.
How ml-connector handles it
ml-connector stores both credential sets encrypted. It holds the Deltek OAuth2 password-grant token and refreshes it against the tenant token endpoint when a call returns 401, and it sends the GoCardless Bearer token with the fixed GoCardless-Version header on every request. Because a GoCardless payment requires an active mandate, ml-connector only collects on invoices whose client has one, and surfaces clients that still need a mandate set up. Deltek amounts are converted to the smallest currency unit for GoCardless and back when posting cash receipts. Deltek has no signature on its webhooks, so AR invoices are read by polling, while GoCardless payment and payout webhooks are verified by HMAC-SHA256 before any cash receipt is written. Deltek has no idempotency header, so ml-connector checks for an existing receipt by reference before posting to avoid duplicates, and it sends a GoCardless idempotency key on every payment create. Charge dates respect each scheme's notice period, failed collections are surfaced from the failed event, and every record carries a full audit trail with error replay.
A real-world example
A 90-person architecture and engineering firm runs Deltek Vantagepoint for project accounting and bills clients on monthly retainers and milestone invoices. It collects most fees by UK bank debit through GoCardless. Before the integration, an accountant exported the open invoice list from Deltek each week, created the payments by hand in the GoCardless dashboard, then weeks later matched each lump-sum payout on the bank statement back to invoices line by line. With Deltek and GoCardless connected, approved AR invoices become bank-debit payments automatically against the right mandate, confirmed collections post back as cash receipts on the correct project, and each payout is reconciled to its payments, so cash application stops being a manual weekly chore.
What you can do
- Turn open Deltek AR invoices into GoCardless bank-debit payments against each client's active mandate.
- Post confirmed GoCardless collections back into Deltek as cash receipts on the originating client and project.
- Reconcile each GoCardless payout to its underlying payments, fees, and refunds using payout items.
- Bridge Deltek OAuth2 password-grant tokens and the GoCardless Bearer token, with token refresh on expiry.
- Verify GoCardless HMAC-SHA256 webhooks and poll Deltek AR data, with retries and a full audit trail.
Questions
- Which direction does data move between Deltek and GoCardless?
- Open AR invoices move from Deltek into GoCardless as bank-debit payments, and confirmed collections move back from GoCardless into Deltek as cash receipts. GoCardless payouts are read-only, so ml-connector never writes financial entries into GoCardless. It only reads payout items to reconcile each payout to its payments.
- What happens if a client has no GoCardless mandate yet?
- GoCardless cannot create a payment without an existing active mandate, so ml-connector only collects on invoices whose client already has one. Clients that still need a mandate are surfaced rather than collected, and you set the mandate up in GoCardless or through a hosted billing request first. Once the mandate is active, that client's invoices are picked up on the next run.
- How does the integration avoid duplicate payments and cash receipts?
- Deltek has no idempotency header, so ml-connector checks for an existing cash receipt by reference before posting and queries Deltek for the invoice before collecting. On the GoCardless side it sends an idempotency key on every payment create, so a retry returns the same payment instead of creating a second collection. Every record carries an audit trail and can be replayed if a downstream call fails.
Related integrations
More Deltek integrations
Other systems that connect to GoCardless
Connect Deltek and GoCardless
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started