Spendesk API Integration Research

Date: 2026-05-13 Product: Spendesk (spendesk.com) -- Spend Management Platform, Paris (with Berlin and Hamburg offices) Purpose: Evaluate Spendesk's API capabilities for Orcha integration -- specifically for a German customer evaluating Spendesk as a Pleo alternative for employee credit cards while continuing to use Orcha for AP invoices and DATEV for accounting.


Important Context: What Spendesk Actually Is

Spendesk is NOT an ERP or accounting system. Like Pleo, Payhawk, and Moss, it is a spend management platform that handles:

Spendesk sits upstream of the ERP -- it captures, codes, and approves expenses, then exports pre-accounted data to the customer's actual accounting/ERP system (DATEV, NetSuite, Xero, QuickBooks, Sage 100, Exact Online, Business Central, Odoo, ACD).

Implication for Orcha: Spendesk is a peer (spend management) layer, not a target system to push invoices into. For the customer scenario in scope (Orcha = AP, DATEV = accounting, Spendesk = card programme), the integration question is narrower:

  1. Can Orcha read card transaction data from Spendesk to provide unified spend analytics alongside its invoice corpus?
  2. Can Orcha write reference data (chart of accounts, cost centers, tax codes, suppliers) into Spendesk so the customer's card-coding stays consistent with the AP coding Orcha already drives?

The answer to (1) is YES with caveats around webhook maturity. The answer to (2) is technically YES but operationally heavy because of two gating issues: (a) the Spendesk-DATEV integration is one-way export only -- master data does NOT flow DATEV->Spendesk natively, so Orcha (or someone) has to actively keep Spendesk in sync; (b) API access is gated to the Premium plan or higher, which is the highest published tier short of Enterprise. See section 7.


1. Summary -- Capability Matrix

Capability Public API Via Tray.io Via Zapier Via DATEV Via CSV Verdict
Read payables (invoices, credit notes, card charges) YES (GET /payables) UNCLEAR NO N/A YES Available now (Premium+)
Read settlements (the payment side) YES (GET /settlements) UNCLEAR NO N/A YES Available now (Premium+)
Read payable attachments (receipts/invoices) YES (attachment endpoints) UNCLEAR NO N/A N/A Available now (Premium+)
Read bank fees, wallet loads, wallet summary YES UNCLEAR NO N/A YES Available now (Premium+)
Real-time webhooks (payable.created, settlement.created, etc.) YES (marked experimental, HMAC SHA256 signed) NO NO N/A N/A Available now (Premium+, experimental)
Read suppliers YES UNCLEAR NO YES (limited) YES Available now
Write suppliers UNCLEAR -- not enumerated in public docs UNCLEAR NO NO (one-way export) YES (UI import) Workaround likely required
Read chart of accounts (expense categories) YES UNCLEAR NO NO YES Available now
Write chart of accounts UNCLEAR -- API supports "retrieve and edit"; specific write endpoints not enumerated publicly UNCLEAR NO NO (one-way export to DATEV) YES (UI import) Workaround required
Read/write cost centers (KOST1/KOST2 equivalent) YES (read confirmed via "cost centers" resource); write status unclear UNCLEAR NO NO YES Read confirmed, write unclear
Read/write analytical fields (cost centers, projects, custom analytic field) YES (read confirmed); write status unclear UNCLEAR NO NO YES Read confirmed, write unclear
Read/write tax codes (BU codes) UNCLEAR -- not enumerated as a distinct resource in public docs NO NO NO (one-way export) YES Workaround required
Read members (employees) YES UNCLEAR NO YES (HRIS-connected) YES Available now
Mark expenses as exported UNCLEAR (NetSuite/DATEV integrations handle this internally) NO NO YES (automatic) N/A Not surfaced publicly
Push invoices into Spendesk NO (email mailbox / UI upload only) NO NO NO NO Not via API
Trigger/manage approvals NO NO NO NO NO Not available
Issue cards programmatically YES (card issuance and management endpoints) UNCLEAR NO N/A N/A Available now (Premium+)

Overall assessment: Spendesk has a real, OAuth2-backed public API with a coherent data model around Payables + Settlements (the same dual-entry abstraction the platform uses internally). For the read-side use case (Orcha pulls card-transaction data for unified spend analytics), the API is sufficient -- payables, settlements, attachments, suppliers, cost centers, analytical fields, and expense categories are all retrievable, and webhooks (still tagged experimental) exist for real-time notification with HMAC SHA256 signature verification. However, three gaps significantly limit the write-side use case (Orcha pushes reference data into Spendesk):

1. The DATEV integration is one-way export only. Unlike Payhawk's deep bidirectional DATEV Cloud Services integration, Spendesk's DATEV connection uses Rechnungsdatenservice 1.0 strictly for outbound transmission. The Spendesk docs are explicit: "The integration does not support the import of your master data (suppliers, accounts, VAT rates and cost dimensions) into Spendesk." So Spendesk does NOT auto-acquire DATEV master data the way Payhawk does. Reference data must be entered manually in Spendesk, imported via CSV, or pushed via API.

2. API write endpoints for reference data are not enumerated in the public developer portal as we can scrape it. The public docs explicitly list the API as supporting retrieval of suppliers, cost centers, expense categories, and analytical fields; they confirm API credentials can "retrieve and edit" data according to granted permissions, but specific POST /suppliers or POST /cost-centers endpoints are not visible from the public portal. The developer portal is a JS-rendered SPA (ReadMe.com hosted) and WebFetch returns only the chrome -- the actual reference content requires interactive browsing.

3. API access is gated to the Premium plan. Premium is Spendesk's second-highest published tier (Essentials -> Growth -> Scale -> Premium -> Enterprise). The customer must either already be on Premium for AI categorization / NetSuite / Workday / SAP integrations, or upgrade specifically for API access. Pricing is quote-based; no public price point.

Net: Spendesk is materially worse than Payhawk on both critical fronts for this customer (DATEV master-data import + API tier gating), and comparable to or slightly better than Pleo on real-time webhook support, but with a tighter access gate (Premium tier vs Pleo's Advanced).


2. API Landscape

API Layers

API Base URL Purpose
Public API https://api.spendesk.com (referenced through developer portal) Main REST API: payables, settlements, attachments, bank fees, wallet, members, suppliers, analytical fields, cost centers, expense categories, cards, webhooks
Developer Portal https://developer.spendesk.com/ ReadMe.com-hosted JS SPA. Contains Documentation, Changelog, Postman collection, Webhooks admin
Reference docs (JS SPA) https://developer.spendesk.com/reference/* and https://developer.spendesk.com/public/reference/* Endpoint-level reference. Not server-rendered -- WebFetch returns only the page chrome. Authenticated browsing required for full schemas.
Help Center (developer section) helpcenter.spendesk.com/en/articles/9250246-build-a-native-integration-using-spendesk-api Auth + credential setup guide
Postman collection Hosted by Spendesk PDE SAS workspace on Postman Linked from developer portal
OpenAPI / Swagger spec Referenced as "OpenAPI-compatible documentation"; not located as a direct URL during this research Per Spendesk blog
Sandbox environment Yes (referenced in blog: "testing calls in the sandbox environment before moving to production") Specific URL not surfaced in public docs

Honest gap: The developer portal is a JS-rendered SPA built on ReadMe.com. Public WebFetch cannot retrieve endpoint-level content; pages return only navigation and footer. All endpoint-level details in this document come from (a) public help-center articles, (b) the Spendesk blog post on their API, (c) third-party indexing services like apitracker.io, and (d) Google search snippets that surface fragments of authenticated portal content. Anything below marked "UNCLEAR" needs verification by an authenticated probe against a real Spendesk Premium account.

Authentication

Method Details
OAuth 2.0 client credentials Primary auth: POST /auth/token with client_id + client_secret, returns access_token
API keys Also referenced for Spendesk-native (non-partner) integrations; per help center, account-owner creates a "key" in Settings > Integrations > API access management
OAuth 2.0 for partner integrations OAuth2 partners use scoped tokens (e.g., settlement:read)
Scopes Per-resource scopes (settlement:read, payable:read, etc.) -- granted explicitly when creating credentials
Webhook secret Provided at webhook-instance creation (or auto-generated; recommended >=32 chars). Used to verify x-spendesk-webhook-signature
Credential lifecycle Maximum 1-year expiration on API credentials; shorter periods recommended for external teams. Client secret shown once only.
Required role Account Owner role to create credentials

OAuth 2.0 client credentials with scoped tokens places Spendesk between Payhawk (static API keys, no scopes) and Pleo (OAuth 2.0 client credentials with scopes). The 1-year max key TTL is more aggressive than either competitor's default and is a security plus.

Rate Limits

For comparison:

Spendesk is meaningfully more restrictive than both -- the 5-concurrent cap in particular forces serial processing for bulk syncs and is the lowest in the cohort. For Orcha's incremental sync + webhook-driven reconciliation pattern this is workable, but a full bulk replay on a large account would need careful pagination + serial-mode pipelining.

API Categories

Confirmed via help center + Spendesk's own blog + apitracker.io listing + search snippets from authenticated portal pages:

API Category Read Write Notes
Payables GET /payables, individual lookup UNCLEAR (read confirmed; write not enumerated in public docs) Liability records. Created internally by card transaction or approval-of-spend-request. Webhook payable.created exists.
Settlements GET /settlements N/A Payment side of a payable -- created when payable is paid via card/wire/wallet. Webhook settlement.created exists.
Payable Attachments YES (retrieve attachments tied to a payable) UNCLEAR (attachments arrive via email mailbox + UI upload primarily) Receipts and invoice PDFs
Bank Fees YES (FX, ATM, card fees) N/A Tracked separately for accounting export
Wallet Operations Wallet loads + wallet summary N/A Funds movement within Spendesk wallet
Members (Employees) YES UNCLEAR; HRIS connectors handle most member lifecycle Linked to expense ownership
Suppliers YES (retrieve) UNCLEAR -- not enumerated as a distinct POST /suppliers in public docs Required for AP invoices; created in UI or via DATEV mapping or CSV import
Cost Centers YES UNCLEAR Maps to DATEV KOST1/KOST2 on export
Analytical Fields YES (incl. expense category, custom analytic field) UNCLEAR Custom fields applied to payables/POs
Expense Categories YES (this is Spendesk's chart-of-accounts equivalent) UNCLEAR One category per payment (single-select, not split)
Cards Listed in API capabilities (issuance + management of virtual + physical) YES (programmatic virtual card provisioning is explicitly listed as a use case) Unique vs Pleo/Payhawk in customer-facing docs
Webhooks List subscriptions Create / update / delete via POST /webhooks etc. (still tagged experimental) One company ID per webhook, one or more events; HMAC SHA256 signed

Experimental Webhooks Status

The webhook system is labeled "experimental" on the developer portal. To use webhooks, you currently must:

  1. Request access to experimental features
  2. Create a dedicated API key with experimental scopes
  3. POST /webhooks to subscribe

Each webhook is bound to one company ID and one or more events. Events arrive with x-spendesk-webhook-signature header containing HMAC SHA256 of the payload, computed with the secret provided at subscription creation (or auto-generated). Webhook secret is recommended at >=32 chars and is displayed once only.

Implication for Orcha: webhook support is real but flagged with the standard "may change" caveat. The Payhawk equivalent (expense.created etc.) is NOT marked experimental and is part of the GA contract; this is a difference in maturity to call out to engineering when prioritizing.

Versioning / Deprecation

No public deprecation schedule surfaced. The Spendesk API was first publicly announced as a "community-designed API" (per Finextra coverage; exact launch date not retrievable from public sources during this research). No explicit version number in the base URL was confirmed.


3. Write Capability Verification

Confidence: LOW-MEDIUM. This is the biggest unverified area in this research. Public sources confirm that:

But specific POST /suppliers, POST /cost-centers, POST /expense-categories, or POST /analytical-fields endpoints are NOT enumerated in any public source we can reach. The reference docs are gated behind a JS SPA.

Confirmed Write Endpoints / Operations

Operation Method Confidence Source
Issue virtual card POST MEDIUM-HIGH Spendesk blog "key benefits of a public API": "programmatic virtual card provisioning"
Trigger supplier payment POST MEDIUM Spendesk blog: "automate supplier payments"
Create webhook subscription POST /webhooks HIGH Developer portal Using Webhooks page (experimental)
Update webhook subscription PUT MEDIUM Standard REST pattern; not directly confirmed
Delete webhook subscription DELETE MEDIUM Standard REST pattern; not directly confirmed
Mark payable as exported UNCLEAR LOW Not visible in public docs

Partial / Workaround Write

Operation Status Workaround
Create supplier No public endpoint confirmed Use Spendesk UI > Suppliers > bulk import (CSV); or rely on email-mailbox invoice flow that creates suppliers implicitly via OCR
Update supplier master data No public endpoint confirmed Same as above
Create chart of account / expense category No public endpoint confirmed Use Spendesk UI > Settings > Organisation > Analytical fields; the integrations with NetSuite/Xero pull CoA from those systems automatically, but DATEV does NOT (one-way export only)
Create cost center No public endpoint confirmed UI configuration
Create tax code No public endpoint confirmed UI configuration; export to DATEV maps VAT rates -> BU codes

Key Limitations


4. iPaaS & Middleware Findings

Platform Spendesk Connector? Quality Details
Tray.io YES Connector exists A dedicated Spendesk integrations page exists at tray.ai/connectors/spendesk-integrations/how-it-works, but the detailed "how it works" subpage returned 404 during this research, so triggers/actions cannot be enumerated. The connector's existence is confirmed by the URL being indexed.
Zapier NO -- No dedicated Spendesk Zapier app found in the marketplace. site:zapier.com Spendesk returned no Spendesk-specific results.
Make.com NO -- Not found via search
n8n NO -- Not found via search; no community node
Workato NO -- Not in marketplace
Celigo NO -- Not in marketplace

Tray.io is the only iPaaS path identified, and the connector's actual feature surface could not be enumerated from the public web (404 on the how-it-works detail page). For most no-code orchestration needs, customers will fall back to:

This is a notable downgrade vs both Pleo (Zapier with 4 triggers + 8 actions) and Payhawk (Workato with 2 triggers + 3 actions + Make community module).


5. Alternative Channels

DATEV Integration (Native)

This is Spendesk's weakest area for the customer in scope, and the single largest contrast vs Payhawk.

Aspect Detail
DATEV products supported DATEV Unternehmen Online (DUO) -- listed on DATEV Marketplace; Spendesk has been a DATEV partner since August 2020
API/protocol used by Spendesk DATEV Rechnungsdatenservice 1.0 (RDS 1.0)
Direction One-way only: Spendesk -> DATEV UO
Inbound (DUO -> Spendesk) NONE. Docs are explicit: "The integration does not support the import of your master data (suppliers, accounts, VAT rates and cost dimensions) into Spendesk." Master data must be configured manually in Spendesk.
Outbound (Spendesk -> DUO) Expense claims, invoices, credit notes, card purchases/refunds (as journal entries). Receipts (PDF, PNG, JPEG) transferred in original format as digital documents. Payments, reimbursements, FX/ATM fees, and wallet loads must be exported separately via CSV.
Setup Wizard-driven, NOT one-click. Prerequisites: (1) DATEV cloud services enabled; (2) "Erweitert" processing mode active in DUO; (3) subscription to RDS 1.0 active; (4) DUO "Documents" application permissions configured for both Lieferantenrechnungen and Kundenrechnungen in "Erweitert" mode with "Ware, Leistung" folder selection. Tax-advisor cooperation required.
Speed Manual batch. User navigates Bookkeep > Export, picks a period, previews, clicks "Push to DATEV UO". Cadence per docs: "every month or when you need to." Real-time push is NOT supported via the native DUO connector.
Mapping VAT rates -> BU codes; cost dimensions -> KOST1 + KOST2; suppliers + members -> Suppliers in DUO
Belege Online support Not explicitly mentioned in Spendesk docs (unlike Payhawk which explicitly delivers to Belege Online)
Limitations IBAN and BIC are excluded from exported expense data. Receipt number must be set on each expense before export, else blocked. RDS 2.0 not mentioned as supported.

Implication for Orcha-in-customer-stack: Spendesk's DATEV integration is a one-way batch push of pre-coded entries. The customer's accounting reference data (CoA / Sachkonten, KOST1/KOST2, BU codes) lives in DATEV but does NOT flow into Spendesk automatically. This means the customer (or Orcha, if Orcha is the master) must keep Spendesk's expense categories, cost centers, and analytical fields aligned with DATEV manually -- which is exactly the problem the customer is presumably trying to solve. This is the defining structural difference vs Payhawk, where DATEV CoA + tax + KOST flow back into Payhawk natively via DATEV Cloud Services bidirectional sync.

Native ERP/Accounting Integrations

Confirmed via spendesk.com/integrations:

System Connection Type Direction
Xero Native API Bidirectional
NetSuite Native API (Premium-tier only) Bidirectional (master data imported into Spendesk; Spendesk explicitly imports NetSuite accounts)
QuickBooks (US) Native API Bidirectional
DATEV (DUO) RDS 1.0 (XML) + CSV for remaining flows One-way export
Sage 100 Native API Bidirectional
Odoo Native API Bidirectional
Exact Online Native API Bidirectional
ACD Native API Bidirectional
Microsoft Business Central Native API Bidirectional
Custom Exports CSV/Manual Outbound

The DATEV connector is conspicuously the only "one-way" connector in this list, while NetSuite, Xero, QuickBooks, etc., do support master-data import into Spendesk. For a DACH-focused customer, this is the wrong asymmetry.

HRIS Integrations (Scale & Premium tiers)

Lucca, HiBob, BambooHR, Personio, Workday, CharlieHR, Payfit, Deel, SAP SuccessFactors, Sage HR, Remote, Officient, BreatheHR, Cezanne HR, Eurecia, Factorial, Humaans, Kenjo. Workday + SAP SuccessFactors require Premium tier.

Webhooks

Aspect Detail
Available YES, but marked experimental
Confirmed events payable.created (referenced in docs as needing dedupe check); settlement.created (entity type "settlements", eventType "created" confirmed in indexing). Full list NOT enumerable from public web -- gated behind authenticated portal
Subscription management POST /webhooks to create; per-company-ID scoping
Delivery HTTPS POST
Signature x-spendesk-webhook-signature header = HMAC SHA256 of payload using secret provided at subscription creation
Secret Recommended >=32 chars; returned once at creation only
Retries Not publicly documented
Access prerequisite Must request access to experimental features + create API key with experimental scopes

CSV Exports


6. Licensing & Access Requirements

API Access by Plan

Per the Spendesk help center: "Access requires either a Premium or Enterprise pricing plan." API features are unavailable for accounts on Essentials, Growth, or Scale.

The four published tiers (per current Spendesk help center "What's included in my subscription plan"):

Plan API access? Key included features
Essentials NO Cards, spending controls, AP, expense claims, budget tracking, basic integrations (Xero, DATEV, QuickBooks). Multi-entity max 3 (1st free, additional 100 EUR/GBP). 100 transactions/month included; 50 EUR/GBP per additional 100.
Growth NO Everything in Essentials + analytical split + rule-based expense categorization
Scale NO Everything in Growth + purchase orders + budgets + spend reporting + travel integration + most HR integrations + dedicated account team
Premium YES Everything in Scale + AI categorization + Workday + SAP HR + SAML SSO + NetSuite integration + API access
Enterprise YES Custom

For comparison:

Spendesk has the most restrictive API gating in the cohort. A customer who would have only needed Essentials or Scale must upgrade to Premium specifically for API access (with the side benefits of AI categorization, NetSuite, Workday, SAP HR, and SAML SSO).

Pricing Model

Component Detail
Platform fee Fixed monthly subscription per plan tier, scope determined by add-ons
Variable fee Per-transaction usage charges on card purchases, invoice payments, expense claims
Add-on modules Procure-to-pay, Accounts Payable, Advanced workflows, Multi-entity, HR & ERP Integrations, AI automation
Cards Unlimited physical cards, no order or monthly fees
Users Unlimited (no per-user charge)
CFO Connect Pro 625 EUR/year membership; FREE for Spendesk customers (one seat)
Published pricing NO -- quote-only; "Request a free quote"

Honest gap: Spendesk does NOT publish their tier prices publicly. Third-party sources (G2, Capterra, GetApp) likewise do not list firm prices. For the customer's evaluation, an actual quote is required. Anecdotally, Spendesk has historically been at the higher end of the spend-management market vs Pleo / Payhawk / Moss.

Customer Setup Checklist

  1. Customer needs Premium or Enterprise plan (verify with Spendesk sales).
  2. Account Owner role required to provision API credentials.
  3. Contact Spendesk sales/support to authorize API access (per help center: "Contact Spendesk sales team or customer support for authorization").
  4. Settings > Integrations > API access management > Create new key.
  5. Set descriptive name + expiration (max 1 year, shorter recommended).
  6. Select specific permission scopes per resource (settlement:read, payable:read, etc.).
  7. Capture client secret -- shown once only, store in vault.
  8. For webhooks: separately request access to experimental features + create dedicated API key with experimental scopes.
  9. (Optional) Set up DATEV DUO export connection -- noting it is one-way push, NOT a master-data sync.

7. Orcha-Specific Deep Dive

Critical Question Comparison: Spendesk vs Pleo on the Customer's Pain Points

Pain Point with Pleo Spendesk Status Source
Realtime transaction webhooks -- Pleo gates expense data behind customer-triggered export jobs (monthly cadence) YES, real-time webhooks (payable.created, settlement.created confirmed). HMAC SHA256 signed via x-spendesk-webhook-signature. BUT the webhook system is officially labeled "experimental" and requires separate access provisioning. This is meaningfully more real-time than Pleo's batch export jobs, but less mature than Payhawk's GA webhook contract. developer.spendesk.com/reference/using-webhooks
Receipt URL longevity -- Pleo expires receipt URLs after 24h NOT PUBLICLY DOCUMENTED. The Spendesk API exposes "payable attachments" as a separate endpoint family (rather than embedding a URL on the payable response, as Payhawk does). The retrieval mechanics and TTL policy are not stated in any public Spendesk doc. The developer portal is a JS SPA we cannot scrape. HIGH PROBABILITY these are stream-via-API endpoints (not signed pre-shared URLs) which would mean no TTL issue, but must be confirmed by authenticated probe. developer.spendesk.com (gated)
Full CRUD on reference data (vendors, CoA, cost centers, tax codes) READ confirmed, WRITE unclear. Suppliers, cost centers, analytical fields, expense categories are all retrievable. Write endpoints for these resources are NOT enumerated in any public source we can reach. Help center confirms credentials can "retrieve and edit" -- so write capability likely exists at SOME level, but exact endpoint coverage requires authenticated portal inspection. Worst-case fallback: CSV bulk import via UI for suppliers; manual UI configuration for CoA / cost centers / tax codes. helpcenter.spendesk.com (read confirmed); write coverage gap
DATEV native integration depth WEAK relative to Payhawk. One-way export only via RDS 1.0. Master data does NOT flow DATEV -> Spendesk. Manual batch cadence (monthly typical). Belege Online integration not confirmed. Payments / reimbursements / FX-ATM fees / wallet loads must be exported separately via CSV (not all goes through RDS 1.0). helpcenter.spendesk.com/en/articles/5543914-overview-of-datev-uo-native-integration
API access pricing tier MORE restrictive than Pleo. Spendesk gates API to Premium (second-highest tier). Pleo gates to Advanced (mid-tier, $109/mo+). Payhawk includes API on every plan. Spendesk pricing is quote-only -- no public price point. helpcenter.spendesk.com/en/articles/9250246-create-api-credentials
Field completeness on transactions Likely strong on the read side. Payable response covers liability detail; Settlement response covers the payment. Together they yield: amount + currency + (presumably) FX, supplier reference, cost center, expense category, analytical field values, member (employee) reference. Card last-4 and virtual/physical flag are NOT confirmed as exposed on payable/settlement payloads from public sources; the cards API exists but the relationship between a settlement and the issuing card is not documented publicly. Receipt access via payable-attachments endpoints. Approver / approval-status field exposure unclear. developer.spendesk.com (gated); apitracker.io

Critical Question: What Role Does Spendesk Play Relative to Orcha?

Spendesk and Orcha have overlapping functionality in the AP module of Spendesk -- but the customer scenario in scope assumes Spendesk's Accounts Payable module is not the primary AP system (Orcha is). The split is clean:

Capability Spendesk (Cards module focus) Orcha
Invoice capture (OCR) YES (but not the AP system in this scenario) YES (core product)
Card transaction capture YES NO
Card transaction pre-accounting YES (AI on Premium tier) NO
Reimbursements YES (employee expense claims) NO
Cost center / project coding YES (analytical fields) YES
DATEV push YES (one-way batch) YES (direct integration)
Approval workflows YES (read-only via API) Depends on customer

So with Spendesk's AP module not in use by this customer, Spendesk's responsibility is cards + reimbursements + their export to DATEV, and Orcha's responsibility is AP invoices + their export to DATEV. Both streams converge in DATEV.

Integration Scenarios for the Customer

Scenario A: Orcha reads card transaction + expense data FROM Spendesk for unified spend analytics (PRIMARY USE CASE)

Scenario B: Orcha writes reference data INTO Spendesk for consistent coding (SECONDARY USE CASE)

Scenario C: Customer migrates AP from Orcha to Spendesk's AP module

Scenario D: Orcha pushes invoices into Spendesk

Key API Differences vs Pleo and Payhawk

Dimension Pleo Payhawk Spendesk Winner
Real-time webhooks Limited (export-job-gated) YES (GA, RSA-signed) YES (experimental, HMAC SHA256) Payhawk
Export cadence to ERP Customer-triggered Export Jobs Auto on review/settle Manual batch (DATEV); auto for native API ERPs Payhawk
API access tier Advanced ($109/mo+) All plans (free) Premium only (quote) Payhawk
Published pricing YES YES NO (quote-only) Pleo / Payhawk
Vendor CRUD via API YES (first-class) NO (CSV workaround) UNCLEAR (write not confirmed) Pleo
CoA CRUD via API YES (first-class) YES (Categories API, multi-entity Summer 2025) UNCLEAR Pleo / Payhawk
Cost center CRUD via API YES (Tags API) YES (Custom Fields API) UNCLEAR Pleo / Payhawk
Tax code CRUD via API YES (first-class) YES (Custom Fields API) UNCLEAR Pleo / Payhawk
Auth OAuth 2.0 client credentials Static API key OAuth 2.0 client credentials + API keys; scoped tokens; 1-yr TTL Spendesk (tightest)
Rate limit (sustained) 10 req/s 15 req/s 4.17 req/s + 5 concurrent cap Payhawk
DATEV depth One-click export, less deep on master data Native bidirectional via DATEV Cloud Services, Belege Online for documents One-way RDS 1.0 export only, no master data import, manual batch Payhawk by a wide margin
Native iPaaS coverage Zapier (4t + 8a) Workato (2t + 3a) + Make (community) Tray.io only Pleo / Payhawk
Approval via API NO NO (read-only workflow) NO Tie
Invoice push via API NO NO NO Tie
Card issuance via API NO NO YES Spendesk (unique)

Spendesk's one positive differentiator is programmatic virtual card issuance -- explicitly listed as a use case in the Spendesk blog. This is a capability neither Pleo nor Payhawk advertise as a public API surface. Not relevant to the customer's scenario in scope, but worth noting.

Receipt Attachment Access -- Action Required

The single most important unverified mechanic for the customer scenario is how payable-attachments actually returns receipt data: stream-via-API (good -- no TTL concerns), or signed URL (which would inherit the Pleo-style TTL question).

Recommendation:

  1. Before committing engineering effort, run an authenticated probe against a Spendesk Premium sandbox: fetch a payable, list its attachments, inspect the response schema, attempt fetch of the actual binary, and -- if there's a URL field rather than a stream -- test URL persistence at T+1h, T+24h, T+7d.
  2. If stream-based (likely): receipt access is clean; no mirroring required for TTL reasons (though mirroring may still be desirable for resilience).
  3. If signed-URL based with short TTL: mirror to Orcha storage at webhook time.

Orcha Integration Capability Summary

Orcha Need Spendesk Support Endpoint(s) Confidence Notes
Real-time card-tx ingestion YES (webhooks, experimental) Webhook Subscriptions -> payable.created / settlement.created MEDIUM-HIGH HMAC SHA256 signed; "experimental" label requires confirmation that contract is stable
Full payable detail pull YES GET /payables, GET /payables/{id} HIGH Read confirmed
Settlement detail (payment side) YES GET /settlements, GET /settlements/{id} HIGH Companion to payable
Receipt/attachment retrieval YES Payable Attachments endpoints MEDIUM Stream-vs-signed-URL mechanic unverified
Approver chain UNCLEAR Not enumerated in public docs LOW Probe required
Sync chart of accounts (write) UNCLEAR Expense Categories (read confirmed; write unclear) LOW Probe required; UI fallback exists
Sync cost centers / projects (write) UNCLEAR Cost Centers / Analytical Fields (read confirmed; write unclear) LOW Probe required
Sync tax codes (write) UNCLEAR Not enumerated as distinct resource LOW DATEV BU mapping handled on export side, not Spendesk
Sync suppliers / vendors (write) UNCLEAR Read confirmed; write not enumerated LOW-MEDIUM CSV import as documented fallback
Mark expense as exported UNCLEAR Not enumerated publicly LOW DATEV/NetSuite connectors handle internally
Push invoices into Spendesk NO N/A HIGH Email mailbox / UI upload only
Trigger approvals NO N/A HIGH Not exposed
Read employees / members YES Members endpoint HIGH Read confirmed
Issue virtual cards YES Cards endpoints MEDIUM-HIGH Unique vs Pleo / Payhawk

Assessment: Spendesk is a Viable but Significantly Weaker Pleo Replacement Than Payhawk for This Customer

For a German company evaluating alternatives to Pleo specifically for cards while keeping Orcha for AP and DATEV for accounting, Spendesk solves the realtime gap (with caveats) but introduces three new structural problems Payhawk does not have:

  1. API tier gating to Premium is more restrictive than Pleo's Advanced gating. Customer must verify with Spendesk sales whether their volume/spend justifies the upgrade.
  2. DATEV master-data import is not supported. Reference data must flow Orcha -> Spendesk manually or via API (if write endpoints exist), not via the native DATEV connector.
  3. Webhooks are marked "experimental." Real-time read-side architecture is technically possible but carries contract-stability risk.

The one Spendesk-positive note worth flagging to the customer is the OAuth 2.0 auth model with scoped tokens and 1-year-max credential TTL, which is materially better security hygiene than Payhawk's static long-lived API keys.

[Card transactions]            [Vendor invoices]
       |                              |
       v                              v
   Spendesk -- experimental webhook -> Orcha (read-side: unified spend analytics)
       |                              |
       v                              v
     DATEV  <----- shared books ----- DATEV
   (one-way export)                 (direct integration)

Read side (Spendesk -> Orcha):

  1. Subscribe webhooks to payable.created and settlement.created (plus any others surfaced during portal verification)
  2. Implement HMAC SHA256 signature verification with stored webhook secret
  3. On event, GET /payables/{id} + GET /settlements/{id} for full detail
  4. Retrieve payable attachments via the attachments endpoint
  5. Mirror documents to Orcha storage at webhook time (default-safe until attachment access mechanics are verified)
  6. Periodic GET /payables?reviewedAt>... reconciliation sweep against missed webhooks (cadence calibrated to 4 req/s rate limit + 5-concurrent cap)
  7. Stay alert to "experimental" status changes

Write side (Orcha -> Spendesk):

  1. First, verify whether public/partner write endpoints exist for suppliers, expense categories, cost centers, analytical fields. This is the single highest-leverage open question. Status as of this research: unclear from public docs.
  2. If write endpoints exist: push reference data from Orcha (DATEV-aligned) on a schedule. Avoid bulk replays inside a single minute due to rate-limit/concurrency caps.
  3. If write endpoints do NOT exist: fall back to CSV bulk import via Spendesk UI for suppliers (semi-automated; not great); manual UI configuration for CoA / cost centers / tax codes. This is a significant operational drag and is the main reason to prefer Payhawk for this customer.
  4. Do NOT rely on the DATEV connector to fill the gap -- it does not import master data into Spendesk.

When Spendesk Integration Makes Sense

  1. Customer is already on Premium for other reasons (NetSuite integration, AI categorization, Workday/SAP HR, SAML SSO): adding API access is a no-cost option.
  2. Customer is French-German with strong Paris HQ presence: Spendesk has deeper Paris-side enterprise account management than Pleo/Payhawk.
  3. Customer needs programmatic virtual card issuance: Spendesk uniquely exposes this; Pleo and Payhawk do not.

When Spendesk Integration Is the Wrong Choice

  1. Customer is purely DACH-focused and wants the deepest DATEV experience: Payhawk wins decisively.
  2. Customer wants API access on the entry-level plan: only Payhawk offers this.
  3. Customer needs documented full-CRUD write APIs for reference data: Pleo is the only one of the three with publicly enumerated first-class write endpoints for vendors, accounts, tags, tax codes.

What NOT to Build

Architecture Decision

Approach Cost Complexity Value Verdict
Read card tx via experimental webhooks + GET /payables/settlements Premium plan upgrade Medium (HMAC + experimental status risk) High Recommended if customer is on Premium
Mirror documents to Orcha storage $0 marginal Low Medium-High Recommended (default-safe until attachment access verified)
Write reference data via API Premium plan + complexity if endpoints exist High (unverified) Medium if it works Pursue only after authenticated portal verification confirms endpoints
Write reference data via CSV import $0 marginal Low automation value Low Fallback only
Use Tray.io instead of direct API Tray license Lowest Same value as direct if connector covers needs Only if customer is already on Tray

Pre-Implementation Verification Needed

Before any engineering commitment, the Orcha team should obtain access to a Spendesk Premium sandbox and answer:

  1. Webhook event catalog: full enumeration beyond payable.created / settlement.created. Are there transaction.created, card.*, member.*, supplier.* events? Are they all real-time or do some still batch?
  2. Webhook stability: is the "experimental" label still in place? If yes, what's Spendesk's contract-stability commitment? Get this in writing from Spendesk technical contact.
  3. Attachment access mechanic: stream-via-API or signed URL? If signed URL, what's the TTL?
  4. Write endpoint coverage: confirm or refute presence of POST /suppliers, POST /expense-categories, POST /cost-centers, POST /analytical-fields, PUT /analytical-fields/{id}/values. This single answer determines whether scenario B above is feasible.
  5. Approver/workflow exposure on payables: is approver name + status + approval timestamp surfaced on the payable response? Confirm field-level coverage.
  6. Card metadata on settlements: is the issuing card's last-4 / virtual-vs-physical flag exposed on the settlement payload?
  7. Rate-limit headers: what's the exact header name and burst behaviour?
  8. Sandbox URL: production vs sandbox separation, environment switching.
  9. Premium plan pricing: actual quote for the customer's expected card volume.

Recommendation Summary

For the customer scenario (DATEV + Orcha + Pleo replacement with Spendesk for cards): conditional YES, with a strong preference to evaluate Payhawk first. Spendesk's read-side path is workable -- real-time webhooks exist, the data model around Payables + Settlements is coherent, and the field coverage is likely adequate. But the write-side path is unverified, the DATEV master-data direction is wrong for this customer, and the API access gating is the strictest in the cohort.

Spendesk vs Pleo on the three critical gaps that prompted the evaluation:

  1. Realtime: Better than Pleo (real-time webhooks) -- but worse than Payhawk (Spendesk's webhooks are still "experimental"; Payhawk's are GA)
  2. API pricing tier: Worse than Pleo. Pleo gates to Advanced (mid-tier); Spendesk gates to Premium (second-highest). Payhawk has no tier gating.
  3. Receipt URLs: Likely better than Pleo's 24h expiry because Spendesk appears to expose attachments via an endpoint rather than a pre-signed URL, but the mechanic must be verified by authenticated probe.

If Payhawk is on the customer's shortlist, the recommendation is Payhawk over Spendesk for this specific scenario. If only Spendesk and Pleo are in scope, Spendesk is marginally preferable on the realtime axis but materially worse on the tier-pricing and DATEV-master-data axes.


9. Sources

Official Documentation

Help Center -- API & Credentials

Help Center -- DATEV

Help Center -- Reference Data & Fields

Help Center -- NetSuite Comparison Reference

Help Center -- Other

Spendesk Marketing & Blog

iPaaS Connectors

Reviews & Comparisons


Addendum 2026-05-14 — Defense, Cannibalization, Funding Model

Context update: The customer is a German defense-sector company (Pleo for cards, DATEV for accounting, Orcha for AP). Updated priorities: (1) the tool must handle employee credit cards very well as the core need; (2) a strong mobile receipt-capture app; (3) a good API for Orcha to both READ and WRITE; (4) card funding model — the customer prefers NOT prepaid (wants a charge card / monthly settlement or credit line, not a top-up wallet). This addendum covers four supplementary questions; methodology and comparison-table format follow the Qonto-vs-Pleo master assessment §1.

1. Defense-Sector Posture — Verdict: AMBER (leaning RED for an actual arms manufacturer)

Dimension Spendesk Source
Defense/arms exclusion in published policy Not explicit in Spendesk's own customer T&Cs — the General T&C only require lawful use and prohibit "illegal, unlawful or contrary to common decency" activity; no restricted-industry list is published. However, the binding constraint is the card issuer's scheme/AUP, not Spendesk's prose. Spendesk General T&C
Who issues the card / holds the licence For EEA/EUR customers (this customer): Spendesk Financial Services (SFS SAS) — a French payment institution licensed by the ACPR (no. 17518), a wholly-owned Spendesk subsidiary, and a principal member of the Visa network for card issuing. Funds safeguarded in a segregation account at Natixis (French credit institution). GBP customers are issued by Adyen N.V.; USD by Sutton Bank. Spendesk also uses Adyen as its broader Banking-as-a-Service partner. Spendesk PSP for EEA customers; SFS launch press
Issuer's own defense policy SFS SAS publishes no specific restricted-industry list reachable from public sources — its KYB stance is discretionary and governed by ACPR/PSD2 obligations and Visa scheme rules. Adyen (the GBP issuer and BaaS partner) explicitly prohibits "trade of weapons, ammunitions, military arms, explosive devices and firearm parts" as an absolute ban for both merchant and platform models. So for the EUR programme the issuer is SFS (opaque, discretionary), but Adyen sits in the wider stack with a hard arms exclusion. Adyen prohibited/restricted list
Data hosting AWS, high-availability architecture. No specific region/country published on the public security page or reachable Trust Center — EU residency is implied by GDPR/DORA commitments but not concretely documented. Comparable opacity to Pleo. Spendesk Security
Certifications ISO 27001:2022 (independently audited — this is a real platform certification, better than Qonto's e-invoicing-scoped ISO and better than Pleo, which has none). PCI-DSS via partners. DORA compliance stated. No SOC 2, no BSI C5. Spendesk Security

Verdict: AMBER, leaning RED for an actual arms/weapons/military-goods manufacturer. Spendesk's own T&C are silent on defense (silence ≠ permission — same posture as Pleo). The EUR issuer SFS SAS has no published exclusion but a discretionary, ACPR-supervised KYB process. The complication unique to Spendesk: Adyen is woven into the stack (GBP issuer + BaaS partner) and Adyen has an explicit absolute ban on weapons/military arms trade. If the customer is a true arms manufacturer, that Adyen exposure plus the unpublished SFS stance makes this RED-risk; if defense-adjacent (software, components, services), AMBER with mandatory written pre-clearance from Spendesk/SFS compliance before any recommendation. ISO 27001:2022 is a genuine plus over both Qonto and Pleo; the absence of BSI C5 remains a gap if the customer's security function requires it.

2. Cannibalization Risk vs Orcha — Rating: MEDIUM-HIGH (and rising)

Spendesk is materially more AP-encroaching than Pleo or Qonto, and the trend line is clearly toward Orcha's territory:

The one mitigating factor: Spendesk's invoice extraction is shallow on the dimensions Orcha is deep — no evidence of line-item extraction, GoBD-grade German tax-code coding, or native bidirectional DATEV master-data sync (its DATEV connector remains one-way export only, per §5 of the main doc). Orcha's moat (deep extraction + tax compliance + GoBD coding) is intact today. But unlike Pleo (flat, stays in its lane) or Qonto (rising via the Regate acquisition but banking-first), Spendesk is organically building AP automation as a first-class product and shipping into it every release. That makes it MEDIUM-HIGH: every customer who adopts Spendesk's AP module is a customer being actively taught they may not need a separate AP tool.

3. API Read/Write Refresh — No material change since 2026-05-13

Re-verification confirms the original findings stand:

Net: nothing has improved on the write side or the webhook-maturity side since the original research. The READ path is solid; the WRITE path the customer now explicitly needs is the single biggest unverified gap.

4. Card Funding Model + Cards/App UX

Funding model — PREPAID. This is a direct conflict with the customer's stated preference. Spendesk operates a pre-funded wallet model: the company loads funds into a central Spendesk wallet, and physical/virtual cards are topped up from that balance ("you cannot spend more than what is on the card/entity's account"). Cards reload automatically on the 1st of the month or via on-demand top-up. Wallet transfers take 1–3 business days to appear. Reviewers explicitly flag the downside the customer is trying to avoid: "Each card's limit must be backed by pre-loaded funds, effectively tying up working capital and potentially impacting cash flow." The Summer-2025 "flexible payment features" are Google Pay + multi-use virtual cards — not a funding-model change; no charge card, no deferred/monthly settlement, no credit line was found anywhere in current Spendesk materials. (What kind of cards do we use?; Add funds to your wallet; Capterra reviews)

Cards product UX — good but not differentiated; carries a working-capital tax and acceptance niggles. Easy issuance of personalized physical + virtual cards, per-card and per-department budgets, single-use and recurring cards, Apple/Google Pay. EUR cards run on Visa (issued by SFS). Recurring complaints: some merchants don't accept the cards (especially virtual; occasional declines needing terminal/3DS configuration), and the prepaid model ties up cash. More serious: multiple reviewers report funds stuck in the wallet, slow fund returns, and poor support when closing accounts.

Mobile receipt-capture app — a genuine strength. Consistently the most-praised part of the product across G2/Capterra: smart receipt detection, photo-a-receipt-on-the-go capture, automatic reminders if a receipt is missing, intuitive and clean UI. Main app-side gripe: OCR doesn't always auto-fill every expense field. For the customer's "needs a good mobile app for receipt capture" priority, Spendesk delivers.

Addendum Verdict Summary

Question Verdict One-line reason
Defense-sector posture AMBER (RED-risk for a true arms manufacturer) No published exclusion in Spendesk's own T&C, but Adyen is in the stack with an explicit arms ban and EUR-issuer SFS's KYB stance is opaque/discretionary; needs written pre-clearance. ISO 27001:2022 is a plus; no BSI C5.
Cannibalization risk vs Orcha MEDIUM-HIGH (rising) Spendesk sells a real, actively-expanding AP product (three-way matching, AI invoice extraction, e-invoicing roadmap) — more encroaching than Pleo or Qonto, though still shallow on line-items / German tax coding / bidirectional DATEV.
API read/write READ good, WRITE unproven Broad read surface; no public write endpoints for reference data; webhooks still "experimental"; API still Premium-gated. No change since 2026-05-13.
Card funding model PREPAID — conflicts with customer preference Pre-funded wallet only; cards topped up from wallet balance; no charge card / deferred settlement / credit line; reviewers flag tied-up working capital.
Cards/app UX App strong, cards adequate Best-in-class mobile receipt capture; card issuance easy but undifferentiated, plus merchant-acceptance niggles and stuck-funds support complaints.

Addendum Sources