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.
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:
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.
| 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).
| 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.
| 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.
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.
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 |
The webhook system is labeled "experimental" on the developer portal. To use webhooks, you currently must:
POST /webhooks to subscribeEach 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.
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.
Confidence: LOW-MEDIUM. This is the biggest unverified area in this research. Public sources confirm that:
POST /webhooks, list, presumably PUT/DELETE)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.
| 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 |
| 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 |
| 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).
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.
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.
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.
| 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 |
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).
| 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.
settlement:read, payable:read, etc.).| 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 |
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.
Scenario A: Orcha reads card transaction + expense data FROM Spendesk for unified spend analytics (PRIMARY USE CASE)
payable.created and settlement.created -> Orcha endpointGET /payables/{id} and GET /settlements/{id} for full detailGET payable-attachments (mechanism: stream vs URL TBD by probe)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
POST /invoices endpoint. Email-to-mailbox or UI upload are the only paths. Irrelevant since customer doesn't need this.| 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.
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:
| 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 |
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:
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):
payable.created and settlement.created (plus any others surfaced during portal verification)GET /payables/{id} + GET /settlements/{id} for full detailGET /payables?reviewedAt>... reconciliation sweep against missed webhooks (cadence calibrated to 4 req/s rate limit + 5-concurrent cap)Write side (Orcha -> Spendesk):
| 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 |
Before any engineering commitment, the Orcha team should obtain access to a Spendesk Premium sandbox and answer:
payable.created / settlement.created. Are there transaction.created, card.*, member.*, supplier.* events? Are they all real-time or do some still batch?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.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:
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.
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.
| 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.
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.
Re-verification confirms the original findings stand:
POST/PUT endpoints for suppliers, cost centers, expense categories, or analytical fields. The help center lists only retrieval. Confirmed writes remain limited to programmatic card issuance, supplier-payment triggers, and webhook-subscription CRUD. For the customer's "Orcha must WRITE" requirement, this is the key open risk — write-back of DATEV-aligned reference data is unproven and may fall back to CSV import. Requires an authenticated Premium-sandbox probe to resolve.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.
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.
| 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. |