Payhawk API Integration Research

Date: 2026-05-13 Product: Payhawk (payhawk.com) -- Spend Management Platform, London/Sofia Purpose: Evaluate Payhawk's API capabilities for Orcha integration -- specifically for a German customer evaluating Payhawk as a Pleo alternative for employee credit cards while continuing to use Orcha for AP invoices and DATEV for accounting.


Important Context: What Payhawk Actually Is

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

Payhawk 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, Business Central, Sage Intacct, Xero, Exact, etc.).

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

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

Both directions are technically feasible -- with significant nuances. See section 7.


1. Summary -- Capability Matrix

Capability Public API Via Workato Via Make Via DATEV Via CSV Verdict
Read expenses (cards + invoices + reimbursements) YES (GET /expenses) YES (triggers) YES (community) N/A YES Available now
Read individual expense detail YES (GET /expenses/{id}) YES YES N/A YES Available now
Read bank statements / card transactions (raw) YES (Fund Accounts endpoint) NO NO N/A NO Available now
Real-time webhooks (expense.created, etc.) YES YES (real-time trigger) YES N/A N/A Available now
Read receipt/invoice documents YES (URL in document.files[].url) NO NO YES (Belege Online) N/A Available now
Read suppliers/vendors YES (custom field-like) NO NO YES (DUO master data) YES Available now
Write suppliers/vendors PARTIAL (via External ID mapping + custom fields API) NO NO YES (Payhawk -> DUO via External ID) YES (import) Workaround required
Read chart of accounts YES (Categories / custom fields) NO NO YES (DUO -> Payhawk) YES Available now
Write chart of accounts YES (Categories + custom fields update API; multi-entity endpoints added Summer 2025) NO NO YES (one-way DUO -> Payhawk) YES (import) Available now
Read/write cost centers (KOST1/KOST2) YES (custom fields, predefined list type) NO NO Manual setup in DATEV YES Available now
Read/write tax codes YES (custom fields update) NO NO YES (DUO -> Payhawk; BU7/8/9 auto) YES Available now
Read employees YES NO NO N/A YES Available now
Mark expenses as exported (close the loop) YES (added Summer 2025) NO NO YES (automatic) N/A Available now
Push invoices into Payhawk Email inbox / UI upload only NO NO NO NO Not via API
Trigger/manage approvals NO (read-only) NO NO NO NO Not available

Overall assessment: Payhawk has a meaningfully better API posture than Pleo on three critical axes -- real-time webhooks, broad plan availability, and rate limits -- while DATEV integration is among the best in the category (native, bidirectional master-data sync via DATEV Cloud Services / Rechnungsdatenservice 1.0). Reference-data write is feasible but takes a different shape than Pleo: Payhawk models chart of accounts, cost centers, tax codes, and projects as Categories + Custom Fields rather than as separate first-class resources, and supplier/vendor write is the weakest area -- there is no documented POST /suppliers endpoint and suppliers are typically pushed in via the DATEV mapping flow or CSV import.


2. API Landscape

API Layers

API Base URL Purpose
Developer API (v3) https://api.payhawk.io/api/v3 Main REST API: expenses, custom fields, fund accounts, workflow, webhooks
Developer Portal https://developers.payhawk.com/ Interactive documentation with in-browser auth and "Try it"
Help Center (developer section) payhawk.com/help/payhawk-for-developers Conceptual guides, auth setup, FAQ
OpenAPI / Swagger spec Embedded in developer portal Machine-readable spec

Authentication

Method Details
API Key (Bearer or custom header) Primary auth method -- no OAuth
Headers accepted Authorization: Bearer <KEY> OR X-Payhawk-ApiKey: <KEY>
Key types Primary, Secondary (auto-generated, undeletable) + custom keys
Group-level keys For multi-entity orgs -- one key spans multiple entities for master-data ops
Key management Payhawk Web Portal > Settings > Integrations > API Keys
Permissions Admin / IT Admin / custom role required to issue keys

No OAuth 2.0 and no scoped tokens -- this is simpler than Pleo's OAuth client-credentials flow but means API keys are static long-lived credentials that grant broad access. Treat them as production secrets.

Rate Limits

For comparison, Pleo's limit is 600 requests/minute = 10 req/s, so Payhawk is slightly more permissive at the per-second budget. The 15 req/s ceiling is comfortable for incremental sync + webhook-driven reconciliation; a full bulk replay on a large account would need pagination + backoff.

API Categories

Confirmed via developer portal section index, help center, and Workato/Make connector inspection:

API Category Read Write Notes
Expenses GET /expenses (paginated, filterable by reviewedAt, etc.; 1000 records max per page), GET /expenses/{id} POST to create bills, reimbursable, cash expenses (but NOT card expenses -- those come from the card switch) Mark-as-exported PATCH added Summer 2025
Workflow GET /accounts/{accountId}/expenses/{expenseId}/workflow returns approver names, status, steps N/A Approval read-only
Custom Fields List, get definitions and values Create, update, delete field definitions; update values on expenses This is the primary mechanism for cost centers, projects, tax codes, etc.
Categories (Chart of Accounts) List Create / update (Summer 2025 multi-entity endpoints) Maps to DATEV Sachkonten in DUO-connected accounts
Fund Accounts GET bank statements / card-tx ledger with FX info N/A This is the raw transaction feed (settled card tx, ATM/FX fees)
Webhook Subscriptions List subscriptions Create / update / delete subscriptions Per-entity; group-level orgs manage separately
Documents / Receipts Returned inline on expense responses as document.files[].{id, url, contentType} -- array supports multiple files per expense Implicit (attached via Receipts Mailbox or UI/mobile upload) URL longevity not publicly documented -- see section 7
Suppliers Implicit -- exposed on expense responses; bulk via import/export in UI No public POST /suppliers documented; supplier mapping primarily via External ID + CSV import or DATEV sync Weakest area for write parity with Pleo
Employees Read available Limited; managed primarily via HRIS connectors (30+ HR systems including BambooHR, Workday, Personio, Deel)
Cards Card detail referenced on expenses (last-4, type, virtual/physical implied) N/A Card issuance handled in UI / via banking layer

Recent (Summer 2025) Additions

Per the Summer 2025 release notes:

Deprecation / Versioning

API is on v3. No public deprecation schedule surfaced. The v3 namespace appears stable; older versions are not referenced in current docs.


3. Write Capability Verification

Confidence: MEDIUM-HIGH. Payhawk's write surface is real and useful, but it is structured differently than Pleo's. Where Pleo has separate first-class resources for Vendors, Accounts, Tags, Tax Codes (each with full CRUD), Payhawk consolidates most reference data under Categories (chart of accounts) and Custom Fields (cost centers, projects, tax codes, locations, etc.) with a generic update API. Suppliers are the weakest area.

Confirmed Write Endpoints / Operations

Operation Method Confidence Source
Create expense (bill / reimbursable / cash) POST HIGH Developer portal "Create expense"
Update expense (incl. custom field values) PUT/PATCH HIGH Workato connector ("Update expense" action)
Create custom field definition POST HIGH Help Center "Updating Custom Fields from Exact Online" describes the pattern
Update custom field definition / values PUT/PATCH HIGH Help Center; ERP integrations rely on this
Delete custom field DELETE MEDIUM Listed as supported in dev API overview
Create / update Categories (Chart of Accounts) POST/PUT HIGH Summer 2025 release notes -- explicit multi-entity write API for categories
Mark expense as exported PATCH HIGH Summer 2025 release notes
Mark payment as exported PATCH HIGH Summer 2025 release notes
Create webhook subscription POST HIGH Developer portal "Create Webhook Subscription"
Update webhook subscription PUT HIGH Developer portal
Delete webhook subscription DELETE HIGH Developer portal

Partial / Workaround Write

Operation Status Workaround
Create supplier No documented public endpoint Use supplier bulk import (CSV) in UI; or rely on DATEV DUO master-data sync with External ID mapping; or push supplier as a custom field value
Update supplier master data No documented public endpoint Same workarounds
Set supplier External ID for ERP mapping Supported in UI / bulk import, not confirmed in API Bulk import + manual mapping per Help Center

Key Limitations


4. iPaaS & Middleware Findings

Platform Payhawk Connector? Quality Details
Workato YES (official-grade) Production 2 real-time triggers (New expense, Updated expense) + 3 actions (Get expense, Update expense, Custom action). HTTP connector available for any other endpoint.
Make YES (community) Community-built Contributed by MAXMEL Tech via Make's community/partners program. Free tier. No specific module list published; uses official Payhawk API endpoints under the hood. Adoption is very low ("0 scenarios" published count).
Zapier NO -- No dedicated Payhawk Zapier app found in the marketplace. (Notable gap vs Pleo, which has 4 triggers + 8 actions on Zapier.)
Celigo NO -- Not in marketplace
n8n NO native -- No native or community node found; would have to use the generic HTTP Request node
Tray.io NOT CONFIRMED -- Not listed

Workato is the best iPaaS path if Orcha or a customer wants no-code orchestration. The two real-time triggers (New expense, Updated expense) mirror Payhawk's webhook events and are the same primitives we'd build against directly. For anything beyond expenses (categories write, custom fields write, webhook subscription management), even Workato users will need the HTTP connector. The Zapier gap is real -- customers used to Pleo-on-Zapier will not have parity.


5. Alternative Channels

DATEV Integration (Native)

This is Payhawk's strongest non-API channel and a major advantage vs Pleo for German customers.

Aspect Detail
DATEV products supported DATEV Unternehmen Online (DUO) -- listed on DATEV Marketplace
API used by Payhawk DATEV Cloud Services / Rechnungsdatenservice 1.0
Direction Bidirectional
Inbound (DUO -> Payhawk) Chart of accounts (Sachkonten), tax codes, cost centers (KOST1 + KOST2 -- but must be configured in DATEV first, no auto-pull), supplier master data limitations apply
Outbound (Payhawk -> DUO) Payment transactions (real-time on settle), expense entries (real-time on review), receipts + invoices delivered to Belege Online (DATEV's native document store)
Setup Wizard-driven, NOT one-click. Requires: tax advisor enables Rechnungsdatenservice 1.0 + admin rights in MyDatev, then mapping of collective supplier account, EUR/GBP/USD bank accounts, cash-in-transit account, and ATM/FX fee account. Initial CoA upload via wizard.
Speed Real-time on review (expenses) / settle (payments)
Suppliers DUO does NOT support automatic supplier retrieval. Workflow: set Payhawk supplier's External ID to the DUO supplier code. Bulk via import/export. No retroactive update of historical expenses if mapping changes.
Tax codes Payhawk auto-creates BU7, BU8, BU9; other rates require manual configuration
Special features FX/POS fee handling per IAS 21; protection against double-booking; respects DATEV locked periods; bookkeeping correction flow

Implication for Orcha-in-customer-stack: If the customer connects Payhawk directly to DATEV DUO, the chart of accounts, tax codes, and cost centers will flow DATEV -> Payhawk natively -- meaning Orcha does NOT need to push CoA/tax/cost-center reference data into Payhawk in that configuration. Orcha would still need to push supplier mappings (External ID alignment) if Orcha is the authority for vendor master data, since DUO can't auto-sync those. See section 7 for the recommended split.

Native ERP/Accounting Integrations

Confirmed list (non-exhaustive):

System Connection Type Direction
DATEV (DUO) API (Cloud Services / RDS 1.0) Bidirectional
NetSuite API (native) Bidirectional
Microsoft Dynamics 365 Business Central API Bidirectional (incl. Projects/Tasks pull added Jan 2026)
Microsoft Dynamics 365 Finance API Bidirectional
Sage Intacct API (incl. prepaid expense amortization sync Jan 2026) Bidirectional
Xero API (separate fee export Feb 2026) Bidirectional
Exact Online API (CoA + projects + VAT + departments sync) Bidirectional
Exact Globe API Bidirectional
QuickBooks API Bidirectional
Pennylane API (Dec 2025 -- masterdata sync) Bidirectional
Odoo API Bidirectional
AFAS API Bidirectional
Sage 50/100/200 CSV/XLS template Export
Cegid API/CSV Bidirectional
SAP S/4HANA, B1, ByDesign Predefined CSV/XLS export templates Export

HRIS Integrations (30+)

Workday, ADP, Gusto, BambooHR, Deel, Paycor, Personio, Hibob, etc.

Webhooks

Aspect Detail
Available YES, official
Confirmed event examples expense.created, expense.approved -- "full list under NewWebhookSubscription > EventType in API docs" (not enumerable without authenticated portal access; the schema is JS-rendered SPA so cannot be scraped here)
Subscription mgmt Create / update / delete via API; per-entity (group-level subscriptions managed separately)
Delivery HTTPS POST
Retries Automatic on 408, 409, 429, 500+ responses (retry count not publicly documented)
Signature verification SHA-256 + RSA -- payload signed; receiver verifies with Payhawk's public key
Real-time? YES -- this is the primary advantage vs Pleo

CSV Exports


6. Licensing & Access Requirements

API Access

Payhawk API is free on all plans. This is the headline differentiator vs Pleo.

"Free to use across all Payhawk accounts" -- payhawk.com/integration/api

There is no API-gated tier and no per-call fee. The 15 req/s rate limit applies uniformly. Any paying Payhawk customer can issue API keys via Settings > Integrations.

For comparison: Pleo gates Open API access to the Advanced plan ($109/mo+).

Plan Pricing (Module-Based)

Payhawk priced per module + per admin/accountant seat + per card + by transaction volume, NOT per-user. Employee seats are unlimited on every plan.

Module Starting Price (USD/mo) Relevant For
Travel $299 Business travel booking
Cards & Expenses $449 (some sources cite $699 for higher tier) Primary scope for this customer -- card programme + expense management + 40+ ERP/HR integrations
Bill Payments $349 AP module (customer would NOT need this since Orcha handles AP)
Procure to Pay $499 PO management
Payhawk Complete Custom All modules

Every module includes: unlimited employee seats, OCR data extraction, advanced workflow approvals, multi-entity environment, live accounting integrations, custom exports, HRIS integrations, security/SSO, and developer API access.

Pricing model differences vs Pleo:

Customer Setup Checklist

  1. Customer needs any paying Payhawk plan (Cards & Expenses is the relevant one for this customer)
  2. Admin / IT Admin / privileged custom role navigates to Settings > Integrations
  3. Use Primary/Secondary auto-generated key, or create a custom key
  4. (Optional but recommended) Set up DATEV DUO connection if customer wants Payhawk -> DATEV direct -- see section 5
  5. Subscribe to webhook events (expense.created, expense.approved, etc.) pointing at Orcha endpoint
  6. Implement RSA/SHA-256 signature verification using Payhawk's public key

7. Orcha-Specific Deep Dive

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

Pain Point with Pleo Payhawk Status Source
Realtime transaction webhooks -- Pleo gates expense data behind customer-triggered export jobs (monthly cadence) YES, real-time webhooks. expense.created, expense.approved, full event catalog managed via Webhook Subscriptions API. POST to subscriber endpoint, RSA/SHA-256 signed. Retries on 408/409/429/5xx. payhawk.com/integration/api ; payhawk.com/blog/mastering-webhooks-for-efficient-financial-data-integration
Receipt URL longevity -- Pleo expires receipt URLs after 24h NOT PUBLICLY DOCUMENTED. Expense response returns document.files[].url but the URL TTL policy is not stated in any public Payhawk doc. The developer portal is a JS-rendered SPA that WebFetch cannot read fully -- this needs to be tested empirically (issue an API call, capture URL, attempt re-fetch after 1h / 6h / 24h / 7d). HIGH PROBABILITY these are signed S3/CloudFront URLs with multi-hour TTL (industry standard), but cannot be confirmed without an authenticated probe. developer portal (gated); apitracker.io
Full CRUD on reference data (vendors, CoA, cost centers, tax codes) 3 of 4 yes, 1 weak. CoA via Categories API (read + write, multi-entity from Summer 2025). Cost centers + tax codes + projects via Custom Fields API (full CRUD on definitions and values). Suppliers/vendors lack a documented public CRUD endpoint -- workaround is bulk import or DATEV sync + External ID mapping. This is the only meaningful write gap vs Pleo. payhawk.com/help/overview-of-the-payhawk-developer-api ; Summer 2025 release notes
DATEV native integration depth EXCELLENT. Native DUO integration via DATEV Cloud Services / Rechnungsdatenservice 1.0. Bidirectional master data (CoA, tax codes, KOST1/2). Real-time export of expenses (on review) + payments (on settle) + receipts/invoices to Belege Online. Wizard setup. Listed on DATEV Marketplace. (Pleo's DATEV integration is one-click export, but less deeply bidirectional for master data and uses CSV for older DATEV Kanzlei Rechnungswesen workflows.) payhawk.com/en-us/integration/datev ; payhawk.com/help/connecting-payhawk-to-duo
API access pricing tier API is free on ALL plans. Entry point is the Cards & Expenses module at $449/mo flat (unlimited employee seats). No Advanced-tier gating. payhawk.com/integration/api ; payhawk.com/en-us/pricing-and-plans
Field completeness on transactions Expense response includes: amount + currency + FX, merchant, category (CoA), custom field values (cost center, project, tax code), employee, approver names + status (via separate workflow endpoint), document/receipt URLs, expense type (bill / cash / reimbursable / card). Card last-4 and virtual/physical flag are surfaced via the cards data on expenses. Full schema visible only in authenticated developer portal -- needs verification probe for exact JSON field names. developer portal sections "Expenses" + "Workflow" + "Fund Accounts"

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

Payhawk and Orcha have overlapping functionality in the AP module of Payhawk -- but the customer scenario in scope explicitly excludes Payhawk's Bill Payments module. The split is clean:

Capability Payhawk (Cards & Expenses module) Orcha
Invoice capture (OCR) (yes, but module not in use by this customer) YES (core product)
Card transaction capture YES NO
Card transaction pre-accounting YES (AI-powered) NO
Reimbursements YES (mileage, per diem) NO
Cost center / project coding YES (Custom Fields) YES
DATEV push YES (Belege Online + real-time export) YES (direct integration)
Approval workflows YES (read-only via API) Depends on customer

So with the Bill Payments module off, Payhawk's responsibility is cards + reimbursements + their export to DATEV, and Orcha's responsibility is AP invoices + their export to DATEV. The two streams converge in DATEV, not in either spend tool.

Integration Scenarios for the Customer

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

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

Scenario C: Customer migrates AP from Orcha to Payhawk's Bill Payments module

Scenario D: Orcha pushes invoices into Payhawk

Key API Differences vs Pleo

Dimension Pleo Payhawk Winner for Orcha
Real-time webhooks Partial (Svix-powered, but expense flow is export-job-gated) YES (expense.* events real-time, RSA-signed) Payhawk
Export cadence Customer-triggered Export Jobs (monthly typical) Auto on review (expenses) / settle (payments) Payhawk
API access tier Advanced plan ($109/mo+) All plans (no tier gating) Payhawk
Vendor CRUD YES (full first-class API) NO (CSV import + External ID workaround) Pleo
CoA CRUD YES (first-class, batch create) YES (Categories API, multi-entity write Summer 2025) Tie
Cost center / project CRUD YES (Tags API, max 5 per entry) YES (Custom Fields API, dynamic + predefined list types) Tie
Tax code CRUD YES (first-class) YES (Custom Fields API) Tie
Auth OAuth 2.0 client credentials Static API key (Bearer) Pleo (more secure model, but Payhawk simpler to integrate)
Rate limit 600/min (10/s) 15/s Payhawk (1.5x)
DATEV depth One-click export, less deep on master data Native bidirectional via DATEV Cloud Services, Belege Online for documents Payhawk
Zapier connector YES (4 triggers + 8 actions) NO Pleo
Workato connector NO YES (2 triggers + 3 actions) Payhawk
Approval via API NO NO (read-only workflow) Tie
Invoice push via API NO NO Tie

Receipt URL Longevity -- Action Required

The single most important unverified question for the customer scenario is: do receipt URLs returned by GET /expenses persist, or do they expire like Pleo's 24h ones? Public docs do not state a policy. Our recommendation:

  1. Before committing engineering effort, the Orcha team should run an authenticated probe against a Payhawk test/sandbox account: fetch an expense, capture the receipt URL, then attempt re-fetch at T+1h, T+6h, T+24h, T+72h, T+7d.
  2. If TTL is short (Pleo-style 24h): Orcha should mirror documents into its own object storage at webhook time -- same pattern we'd use for Pleo.
  3. If TTL is long (multi-day or non-expiring): Orcha can rely on Payhawk-hosted URLs and skip mirroring.

The URL field is explicit and documented (document.files[].url), and the receipt is a first-class object (multiple files per expense supported, with id, url, contentType), so retrieval mechanics are clean -- only the TTL is ambiguous.

Orcha Integration Capability Summary

Orcha Need Payhawk Support Endpoint(s) Confidence Notes
Real-time card-tx ingestion YES (webhooks) Webhook Subscriptions -> expense.created HIGH RSA-signed, retries on 4xx/5xx
Full expense detail pull YES GET /expenses/{id} HIGH Incl. document URLs, custom fields
Approver chain YES GET /expenses/{id}/workflow HIGH Read-only
Raw card-tx feed (pre-review) YES Fund Accounts (bank statements) MEDIUM Catches tx before review
Receipt document URLs YES Inline on expense response HIGH TTL unverified -- needs probe
Sync chart of accounts (write) YES Categories API (multi-entity Summer 2025) HIGH Often unnecessary if DATEV DUO connected
Sync cost centers / projects (write) YES Custom Fields API HIGH Predefined or dynamic list
Sync tax codes (write) YES Custom Fields API HIGH Often unnecessary if DATEV DUO connected
Sync suppliers / vendors (write) PARTIAL Bulk CSV import + External ID; no public POST MEDIUM Workaround; DUO can't auto-pull either
Mark expense as exported YES PATCH (Summer 2025) HIGH Closes the loop
Push invoices into Payhawk NO N/A HIGH Not via API
Trigger approvals NO N/A HIGH Read-only
Read employees YES Employees endpoint HIGH HRIS connectors usually fill this role

Assessment: Payhawk is a Strong Coexistence Partner for Orcha in This Customer Scenario

Unlike Pleo, where API gating + monthly export cadence + 24h receipt expiry make a clean real-time integration painful, Payhawk's posture is fundamentally compatible with how Orcha wants to operate:

[Card transactions]            [Vendor invoices]
       |                              |
       v                              v
   Payhawk  -- real-time webhook -->  Orcha (read-side: unified spend analytics)
       |                              |
       v                              v
     DATEV  <----- shared books ----- DATEV

Read side (Payhawk -> Orcha):

  1. Subscribe webhook to expense.created and expense.approved
  2. On event, GET /expenses/{id} -- pull amount, FX, merchant, category, custom fields, employee, card metadata, document URLs
  3. GET /expenses/{id}/workflow for approver chain
  4. (Optional) periodic GET /expenses?reviewedAt>... reconciliation sweep against missed webhooks
  5. (Optional) Fund Accounts endpoint for raw card-tx pre-review
  6. Mirror documents to Orcha storage at webhook time (default-safe pending TTL probe)

Write side (Orcha -> Payhawk):

  1. If customer connects Payhawk directly to DATEV DUO: write nothing initially -- DATEV is the master, syncs both ways naturally. Verify CoA + tax + KOST mapping is clean.
  2. If customer has supplier master in Orcha that needs to land in Payhawk for matching: push via supplier CSV import (manual or scripted) with External ID column. Revisit if Payhawk releases a public POST /suppliers.
  3. (Optional, advanced) If customer wants specific custom fields populated in Payhawk that aren't in DATEV (e.g., Orcha-specific cost-center taxonomy), use Custom Fields API to create the field definition and populate values.

When Payhawk Integration Makes Sense

  1. Customer migrates off Pleo for cards/reimbursements onto Payhawk: ALL the Pleo gaps that drove the move (realtime, API tier, DATEV depth) are resolved by Payhawk.
  2. Unified spend reporting requirement: Webhooks + structured expense API make this a clean read-side integration.
  3. Multi-entity German group with DATEV across entities: Payhawk's multi-entity API endpoints (Summer 2025) + DATEV native bidirectional integration give the customer a one-stop card-to-DATEV flow.

What NOT to Build

Architecture Decision

Approach Cost Complexity Value Verdict
Read card tx via webhook + GET /expenses $0 marginal (API is free) Low-Medium High Recommended for unified analytics
Mirror documents to Orcha storage $0 marginal Low Medium-High Recommended (default-safe until TTL probed)
Write supplier mappings via CSV import $0 marginal Low Medium Recommended if Orcha is supplier master
Write CoA / cost centers / tax codes via API $0 marginal Medium Low if DATEV DUO connected Skip in default case
Use Workato instead of direct API Workato license Lowest Same value as direct Only if customer is already a Workato shop

Pre-Implementation Verification Needed

Before any engineering commitment:

  1. Probe receipt URL TTL in a Payhawk sandbox -- see section 7
  2. Enumerate the full webhook event catalog (cards, transactions, expenses, payments, reviews) by reading the authenticated developer portal -- this is JS-rendered SPA and not scrapable from public web
  3. Confirm Fund Accounts endpoint schema for raw card-tx feed vs expense-level data -- which is better for pre-review analytics
  4. Confirm whether POST /suppliers exists in a non-public partner-only namespace -- Payhawk has a Partner Program (payhawk.com/partner-program) that may expose richer endpoints than the public dev portal

Recommendation Summary

For the customer scenario (DATEV + Orcha + Pleo replacement with Payhawk for cards): YES, integrate. The read-side path is genuinely clean -- real-time webhooks, included API, deep field coverage. The write-side path is narrower than Pleo's CRUD but sufficient because DATEV does the heavy lifting for accounting reference data. Suppliers are the one gap to call out to the customer (and to mitigate via CSV import + External ID).

Payhawk is materially better than Pleo on the three critical gaps that prompted this evaluation:

  1. Realtime: solved with webhooks
  2. API pricing tier: solved (free on all plans)
  3. Receipt URLs: TBD -- needs empirical verification, but no public claim of a 24h expiry exists, so default expectation is better-than-Pleo

9. Sources

Official Documentation

API & Webhook Details

DATEV Integration

Reference Data & Custom Fields

Integration & Release Notes

iPaaS Connectors

Pricing & Plans

Reviews & Comparisons

Partner & Card Details

Document / Receipt Handling


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

Supplementary research for the German defense-sector customer assessment (companion to 2026-05-14-qonto-vs-pleo-defense-customer-assessment.md). Updated customer priorities: must handle employee credit cards extremely well, needs a strong mobile receipt-capture app, needs a read+write API, and prefers NOT prepaid (wants a charge card / credit line, not a top-up wallet).

1. Defense-Sector Posture — Verdict: AMBER

Dimension Finding Source
Prohibited-business / restricted-activities policy Payhawk's published Restricted Activities list (current Terms + legacy Terms of Use) covers pyramid/Ponzi schemes, illegal goods, counterfeit goods, third-party payment aggregation, money laundering, terrorism financing/propaganda, pornography/escort services, non-licensed drugs, money service bureaus, dealers in precious metals/stones, plus restricted MCCs (gambling, crypto, money transfer, lotteries). Defense, arms, weapons, ammunition, military goods/vehicles, and dual-use goods are NOT named anywhere — neither as prohibited nor as explicitly permitted. This is materially better than Qonto (which explicitly excludes "military activities, including the sale of weapons, military vehicles, and their copies") and similar to Pleo's silence — but silence is discretionary, not a green light. payhawk.com/terms ; payhawk.com/terms-legacy
Card issuer / licence holder (EEA) For EEA companies, Payhawk cards are issued by Payhawk Financial Services UAB (Lithuanian EMI, Bank of Lithuania licence No. 95 / authorisation LB002200) and Paynetics AD (Bulgarian EMI). Payhawk is a Visa principal member. Paynetics' own General Terms list prohibited transactions (pyramid schemes, illegal/counterfeit goods, pornography, AML/CTF) — again no defense/weapons exclusion, only a generic "illegal items / applicable law" catch-all. So neither Payhawk's nor the BIN sponsor's published policy bars defense. lb.lt ; thebanks.eu ; paynetics.online/pages/paynetics-general-terms ; payhawk.com/terms
Data hosting Payhawk's Trust Portal states German customer data is stored in Frankfurt, Germany; all other customer data in Brussels, Belgium; no cross-jurisdiction replication. Infrastructure on AWS + GCP. This is concretely better than Pleo ("EEA, region unstated") and comparable to or better than Qonto (AWS Paris) for a German buyer. payhawk.com/trust
Certifications ISO 27001:2022, SOC 1 Type 2, SOC 2 Type 2, PCI-DSS Level 1, GDPR, DORA-compliant, CSA STAR Level 1, and IDW PS 880 (German auditing standard for service-org controls). This is a much stronger certification stack than both Qonto (ISO 27001 scoped only to e-invoicing; no SOC 2) and Pleo (no ISO 27001, no SOC 2). BSI C5 and ISAE 3402 are NOT held — relevant if the customer's security function mandates BSI C5. payhawk.com/trust ; payhawk.com/security
Verdict AMBER — no documented barrier, and Payhawk is the strongest of the three vendors on certifications and German data residency. But "not prohibited" ≠ "cleared": onboarding remains a discretionary KYB decision, Payhawk's own help docs direct edge-case industries to sales@payhawk.com, and Visa scheme rules + the EEA EMIs' AML/sanctions screening still apply. Get written pre-clearance from Payhawk sales/compliance before recommending. No RED signal anywhere.

Payhawk does overlap with Orcha — more than Pleo, less aggressively than Qonto, but the trajectory is the concern.

3. API Read/Write Refresh (re-verified 2026-05-14)

No material regressions since the 2026-05-13 doc; one positive signal. Base API still https://api.payhawk.io/api/v3, 15 req/s, API free on all plans.

Orcha can READ: expenses/transactions (GET /accounts/{accountId}/expenses, paginated 1000/page, filterable) incl. amount/FX/merchant/category/custom-field values; individual expense detail; receipts/documents (inline files[] array with id/url/contentType, multiple per expense — URL TTL still not publicly documented, still needs an empirical probe); approval workflow (/expenses/{id}/workflow, approver names + status, read-only); raw card-tx feed via Fund Accounts bank-statement endpoint (tx type, currency, FX, fees). Employees and card-metadata endpoints remain thinly documented publicly — confirm in the authenticated portal.

Orcha can WRITE: custom fields — full CRUD on definitions and values (the primary mechanism for cost centers, tax codes, projects); categories / chart of accounts — create/update incl. multi-entity endpoints (Summer 2025); create bills / reimbursable / cash expenses (not card expenses); mark expenses/payments as exported (Summer 2025); webhook subscription CRUD. Suppliers/vendors remain the weak spot — still no clearly documented public POST /suppliers; however the webhook catalogue now lists a supplier.updated event, implying suppliers are at least a first-class object internally, so a write endpoint may exist or be near — worth a direct check with Payhawk. Workaround unchanged: bulk CSV import + External ID, or DATEV DUO sync.

Webhooks: real-time confirmed, ~20 event types incl. expense.created, expense.approved, payment.settled, supplier.updated; HTTPS POST, RSA/SHA-256 signed, retries on 408/409/429/5xx. Real-time capability holds.

4. Card Funding Model + Cards/App UX

Funding model — this is the strong fit for the customer's "NOT prepaid" requirement. Payhawk offers a genuine revolving credit card / credit line in the EEA (incl. Germany), not just a prepaid wallet:

Cards & app UX — solid, not flawless. Aggregate user-satisfaction ~92% across G2/Capterra (~930 reviews); Payhawk is a G2 Leader and Momentum Leader in expense management. Physical cards (plastic + metal) ship in ~5 business days; issuing cards is praised as fast. Mobile receipt capture is a core strength — "snap a photo, system extracts the data instantly," AI auto-suggests the account code. Documented gripes: receipt scanner accuracy/responsiveness is "could be better," the email-receipt matcher doesn't always match, occasional post-update technical glitches, limited reporting, and physical cards don't print the in-app card name (confusing with multi-entity setups). Net: a credible, mobile-first cards + capture product that clears the customer's bar, with minor rough edges typical of the category.

Addendum Sources