Date: 2026-05-13 Product: Ramp (ramp.com) -- Spend Management Platform, New York City (US) Purpose: Evaluate Ramp's API capabilities for Orcha integration -- specifically for a German customer evaluating Ramp as a Pleo alternative for employee credit cards while continuing to use Orcha for AP invoices and DATEV for accounting.
Ramp is NOT an ERP or accounting system. Like Pleo, Payhawk, and Moss, it is a spend management platform that handles:
Ramp sits upstream of the ERP -- it captures, codes, and approves expenses, then exports pre-accounted data to the customer's actual accounting/ERP system (NetSuite, Sage Intacct, QuickBooks, Xero, Workday, Business Central, etc.).
Ramp is the highest-profile US fintech in this category (USD ~32B valuation as of 2026), known for API maturity, AI tooling, and aggressive "free tier funded by interchange" pricing.
Implication for Orcha: Ramp is a peer (spend management) layer, not a target system to push invoices into. For the customer scenario in scope (German company, Orcha = AP, DATEV = accounting, Ramp considered for cards), the integration question is narrower:
However, the gating question is whether Ramp can service the customer at all. See section 1.
Ramp is in the middle of an EU market entry that begins summer 2026 (i.e. right now / imminent). German-headquartered companies CANNOT directly sign up as Ramp customers today; the company is operating a waitlist with onboarding "beginning this summer". (prnewswire.com, ramp.com/blog/ramp-is-launching-in-europe)
The relevant facts:
| Question | Answer | Source |
|---|---|---|
| Can a German-HQ company sign up for Ramp today? | NO -- waitlist only. Direct EU onboarding starts "this summer" (summer 2026). | ramp.com/europe |
| Can Ramp issue EUR cards to a German entity? | YES, but only as a subsidiary of an existing US customer today. Stripe powers Ramp's card issuing for EUR in Ireland, the Netherlands, Spain, Germany, France, and Italy. (stripe.com) | stripe.com/customers/ramp |
| Which European countries are confirmed for direct onboarding once launched? | UK + EU (EEA) -- specifically named: UK, Ireland, Netherlands, Spain, Germany, France, Italy. Sweden + Poland on the non-EUR roadmap. | ramp.com/blog/ramp-is-launching-in-europe |
| Multi-currency? | YES. USD, EUR, GBP, CAD, JPY, plus more. ISO 4217 currency codes throughout API. (docs.ramp.com) | ramp.com/global |
| EUR billing for German customer? | TBD post-launch. EUR card statements + settlement in EUR for EUR-issuing entities exists today via Stripe. | stripe.com/customers/ramp |
| PSD2 / SCA compliance? | Inherited from Stripe today (Stripe Payments UK Limited / Stripe Technology Europe Limited issue the cards under FCA / Central Bank of Ireland authorization). Ramp itself acquired Billhop (March 2026) for its UK + Sweden payment licenses to operate independently. (prnewswire.com) | ramp.com/europe |
| EU offices? | London + Stockholm (opening 2026 alongside launch). | prnewswire.com |
| DATEV integration? | NO. Not listed in any Ramp documentation, integrations page, or accounting overview. Not mentioned in launch materials. | ramp.com/accounting-automation-software, ramp.com/integrations |
| ZUGFeRD / XRechnung support? | NO public mention. | n/a |
Bottom line: Ramp's product is technically the most API-mature in this evaluation set, but the company is 6-12 weeks away from being a viable option for a German-HQ customer as of this writing (May 2026), and even then it will arrive without a DATEV integration, which is a hard requirement for any serious German SMB / Mittelstand customer using DATEV for accounting. Ramp's go-to-market in Germany will require either DATEV building support themselves, Ramp building it for v1 (no signal in public roadmap), or a third-party connector. This is a disqualifying gap for a customer who uses DATEV today and won't migrate.
The rest of this document continues for comparison reference and to inform Orcha's roadmap thinking once Ramp does land in Germany.
| Capability | Public API | Via Zapier | Via Workato | Via Make | Via DATEV | Via CSV | Verdict |
|---|---|---|---|---|---|---|---|
| Read transactions (cards + reimbursements) | YES (GET /transactions) |
N/A | YES (HTTP/generic) | NO native | N/A (no DATEV) | YES (export) | Available now |
| Read individual transaction detail | YES (GET /transactions/{id}) |
N/A | YES | N/A | N/A | YES | Available now |
Real-time webhooks (transactions.cleared, transactions.authorized, transactions.ready_to_sync, etc.) |
YES | N/A | YES | N/A | N/A | N/A | Available now |
| Read receipt/invoice documents | YES (Receipts API, receipts:read scope) |
N/A | N/A | N/A | N/A | YES (manual) | Available now |
| Read vendors | YES (GET /accounting/vendors) |
N/A | YES | N/A | N/A | YES | Available now |
| Write vendors | YES (POST /accounting/vendors batch up to 500, PATCH, DELETE) |
N/A | YES | N/A | N/A | YES (import) | Available now |
| Read chart of accounts | YES (GET /accounting/accounts) |
N/A | YES | N/A | N/A | YES | Available now |
| Write chart of accounts | YES (POST batch up to 500, PATCH, DELETE) |
N/A | YES | N/A | N/A | YES (import) | Available now |
| Read/write cost centers, projects, custom dimensions | YES (Accounting Fields API: definitions + options, full CRUD) | N/A | YES | N/A | N/A | YES | Available now |
| Read/write tax codes | YES (Tax Code API: POST/GET/PATCH/DELETE /accounting/tax/code, plus tax-code-options endpoints) |
N/A | YES | N/A | N/A | YES | Available now |
| Read/write tax rates | YES (Tax Rates API, batch upload, full CRUD) | N/A | YES | N/A | N/A | YES | Available now |
| Read employees / users | YES | N/A | YES | N/A | N/A | YES | Available now |
| Write users | YES (users:write scope) |
N/A | YES | N/A | N/A | YES | Available now |
| Mark transactions as exported / synced | YES (POST /accounting/syncs with idempotency key) |
N/A | YES | N/A | N/A | N/A | Available now |
| Card management (issue/suspend/terminate virtual + physical) | YES (POST /cards/deferred/virtual, /physical, suspend, terminate; deferred-task pattern) |
N/A | YES | N/A | N/A | N/A | Available now |
| Push bills/invoices into Ramp | YES (POST /bills + POST /bills/{id}/attachments) -- distinct from Pleo/Payhawk gap |
N/A | YES | N/A | N/A | NO | Available now |
| Bill drafts | YES (POST /bills/drafts, attachments) |
N/A | YES | N/A | N/A | N/A | Available now |
| Trigger/manage approvals | PARTIAL -- spend programs + spend controls API exists; approval flows can be configured but direct approve/reject from external API is limited | N/A | partial | N/A | N/A | N/A | Configurable |
| DATEV bidirectional sync | NO | N/A | N/A | N/A | NOT SUPPORTED | N/A | NOT available |
Overall assessment: Ramp has the most API-comprehensive and modern developer surface of any spend tool in this evaluation set (Pleo, Payhawk, Moss, Spendesk, Yokoy, Circula, Finway, Qonto). Webhooks are first-class with explicit transaction events. Reference data has full CRUD with batch endpoints (up to 500 items per upload). Bills CAN be created via API -- a meaningful differentiator vs Pleo, Payhawk, Moss. The Developer API is FREE on all plans (interchange-funded). However, two showstoppers: (1) German-HQ companies cannot directly sign up until summer 2026 onboarding rolls out, and (2) there is no DATEV integration. For a German company that uses DATEV and Orcha today, Ramp is not yet a real option.
| API | Base URL | Purpose |
|---|---|---|
| Developer API (v1) | https://api.ramp.com/developer/v1 |
Main REST API: transactions, cards, users, vendors, accounting, bills, webhooks, custom records |
| Sandbox | https://demo-api.ramp.com/developer/v1 |
Test/sandbox environment |
| Token endpoint | https://api.ramp.com/developer/v1/token |
OAuth 2.0 token issuance (HTTP Basic Auth with client_id:client_secret) |
| Developer Portal | https://docs.ramp.com/ |
Documentation hub (JS-rendered SPA; LLM-friendly plaintext mirrors at /llms.txt, /llms-api.txt, /llms-full.txt, /llms-guides/<slug>.txt) |
| OpenAPI 3.x spec | https://docs.ramp.com/openapi/developer-api.json |
Machine-readable spec for client generation |
| MCP / AI Agent surface | Developer MCP, Ramp Data MCP, Ramp MCP (3 distinct MCP servers documented) | First-class AI-agent integration tier -- ahead of every peer in this set |
| Method | Details |
|---|---|
| OAuth 2.0 Client Credentials | Primary for server-to-server. HTTP Basic Auth with client_id:client_secret to token endpoint. |
| OAuth 2.0 Authorization Code | For third-party apps where users grant access; admin/business-owner consent required. |
| Token format | Opaque (NOT JWT) |
| Token TTL | 10 days -- significantly longer than Pleo or most peers |
| Scopes | 40+ scopes following resource:permission pattern (transactions:read, accounting:write, cards:read_vault, bills:write, etc.) |
| PCI-sensitive scope | cards:read_vault (full PAN access) requires additional security review and PCI qualification |
| App management | Ramp dashboard > Company > Developer > Create New App |
Ramp does not support simple API-key static-token auth (unlike Payhawk's static Bearer model). Everything is OAuth, but client_credentials flow is essentially equivalent for server-to-server purposes.
| Aspect | Detail |
|---|---|
| Limit | 200 requests per 10-second rolling window per source IP (~1,200 req/min, ~20 req/s) |
| Response on exceeded | HTTP 429 |
| Recommended handling | Exponential backoff (1s, 2s, 4s, ...) |
| Timeout | Requests exceeding 60s terminate with HTTP 504 |
| Higher limits | Available on request via Developer API support ticket |
For comparison: Pleo = 10 req/s, Payhawk = 15 req/s, Ramp = ~20 req/s. Ramp is the highest in this peer set on raw throughput, and the per-IP application (rather than per-account) is unusual and slightly more permissive for multi-account orchestrators.
Confirmed via the LLM-friendly plaintext API reference (llms-api.txt) and OpenAPI spec:
| API Category | Read | Write | Notes |
|---|---|---|---|
| Transactions | GET /transactions (filterable by sync_status=SYNC_READY, etc.), GET /transactions/{id} |
None (card transactions are external events) | Real-time via webhooks |
| Cards | GET /cards, GET /cards/{id} |
POST /cards/deferred/virtual, POST /cards/deferred/physical, PATCH /cards/{id} (owner, display name, spend limits), suspend/unsuspend/terminate (deferred-task pattern), GET /cards/deferred/status/{task_id} for async result |
Virtual / physical / agent (AI). Multi-currency. Spend limits per card. |
| Users | List, get | Create/update (users:write) |
Lifecycle docs available |
| Vendors (Bill-Pay) | GET /accounting/vendors, GET /accounting/vendors/{id} |
POST batch up to 500, PATCH, DELETE |
Full CRUD. Reactivation supported. |
| Chart of Accounts (GL Accounts) | GET /accounting/accounts, GET /accounting/accounts/{id} |
POST batch up to 500, PATCH, DELETE |
Full CRUD. |
| Accounting Fields (cost centers / projects / dimensions) | List, get | POST create field, PATCH, DELETE field. Plus POST /accounting/field-options batch up to 500, PATCH/DELETE options |
Two-tier: field definition + options. Maps cleanly to cost centers, projects, classes, etc. |
| Tax Codes | GET /accounting/tax/code, GET /accounting/tax/code/options |
POST/PATCH/DELETE on field + options |
Full CRUD. Singular field (matches single tax-code dimension), multiple options. |
| Tax Rates | GET /accounting/tax/rates |
POST batch up to 500, PATCH, DELETE |
Separate from tax codes. |
| Inventory Items | List, get | Full CRUD | For procurement / item-level coding |
| Ramp-Only Fields | List, get | Full CRUD | Fields that stay in Ramp and don't sync to ERP |
| Accounting Connections | GET /accounting/connection, GET /accounting/all-connections, GET /accounting/connection/{id} |
POST register, PATCH update settings, reactivate, DELETE |
This is how a custom ERP (e.g., DATEV) would be plugged in by Orcha |
| Bills (AP) | GET /bills, GET /bills/{id}, GET /bills/drafts, GET /bills/drafts/{id} |
POST /bills, PATCH, DELETE (archive), POST /bills/{id}/attachments, drafts equivalents |
Real POST /bills endpoint -- you CAN push invoices into Ramp via API. Major differentiator vs Pleo/Payhawk/Moss. |
| Bank Accounts | GET /bank-accounts, GET /bank-accounts/{id} |
None | For payment routing |
| Business Information | GET /business, GET /business/balance |
None | Company metadata, balance/limits |
| Comments | GET/POST /comments/{object_type}/{object_id} |
YES | Add notes to expenses, bills, etc. |
| Audit Logs | GET /audit-logs/events |
None | Full event history |
| Sync Management | POST /accounting/ready-to-sync, POST /accounting/syncs (idempotency-keyed) |
YES | Close the loop after exporting to ERP |
| Custom Records | List custom tables, list/get/delete rows | Create/configure custom & native tables, create/update rows | Effectively a configurable database within Ramp for tracking arbitrary entities |
| Receipts | GET /receipts, GET /receipts/{id} (receipts:read) |
POST (auto-match without transaction ID supported) | Itemization data + image |
| Webhook Subscriptions | List | Create / update / delete | Per-scope event types |
API is on v1 (/developer/v1). Two notable deprecations:
GET /accounting/connection (singular) deprecated in favor of GET /accounting/all-connections + GET /accounting/connection/{id}Confidence: HIGH. Ramp's write surface is the most comprehensive in the spend-management peer set evaluated by Orcha to date.
| Operation | Method | Endpoint | Batch? | Source |
|---|---|---|---|---|
| Create vendor | POST | /accounting/vendors |
Yes, up to 500 | llms-api.txt |
| Update vendor | PATCH | /accounting/vendors/{id} |
No | llms-api.txt |
| Delete vendor | DELETE | /accounting/vendors/{id} |
No | llms-api.txt |
| Reactivate vendor | PATCH | /accounting/vendors/{id} (with status field) |
No | llms-api.txt |
| Create GL account | POST | /accounting/accounts |
Yes, up to 500 | llms-api.txt |
| Update GL account | PATCH | /accounting/accounts/{id} |
No | llms-api.txt |
| Delete GL account | DELETE | /accounting/accounts/{id} |
No | llms-api.txt |
| Create accounting field (cost center / project / dimension) | POST | /accounting/fields |
No | llms-api.txt |
| Update accounting field | PATCH | /accounting/fields/{id} |
No | llms-api.txt |
| Delete accounting field | DELETE | /accounting/fields/{id} |
No | llms-api.txt |
| Upload field options (cost-center values, etc.) | POST | /accounting/field-options |
Yes, up to 500 | llms-api.txt |
| Update / delete field option | PATCH / DELETE | /accounting/field-options/{id} |
No | llms-api.txt |
| Create tax-code field | POST | /accounting/tax/code |
No | llms-api.txt |
| Update / delete tax-code field | PATCH / DELETE | /accounting/tax/code |
No | llms-api.txt |
| Upload tax-code options | POST | /accounting/tax/code/options |
Yes | llms-api.txt |
| Update / delete tax-code option | PATCH / DELETE | /accounting/tax/code/options/{id} |
No | llms-api.txt |
| Upload tax rates | POST | /accounting/tax/rates |
Yes, up to 500 | llms-api.txt |
| Update / delete tax rate | PATCH / DELETE | /accounting/tax/rates/{id} |
No | llms-api.txt |
| Create bill (push invoice into Ramp) | POST | /bills |
No | llms-api.txt |
| Upload bill attachment | POST | /bills/{id}/attachments |
No | llms-api.txt |
| Create draft bill | POST | /bills/drafts |
No | llms-api.txt |
| Update bill | PATCH | /bills/{id} |
No | llms-api.txt |
| Archive bill | DELETE | /bills/{id} |
No | llms-api.txt |
| Issue virtual card | POST | /cards/deferred/virtual (async task) |
No | llms-api.txt |
| Issue physical card | POST | /cards/deferred/physical (async task) |
No | llms-api.txt |
| Update card | PATCH | /cards/{id} |
No | llms-api.txt |
| Suspend / unsuspend / terminate card | POST | /cards/{id}/deferred/... |
No | llms-api.txt |
| Create webhook subscription | POST | (webhooks resource) | No | llms-guides/webhooks.txt |
| Update / delete webhook subscription | PUT / DELETE | (webhooks resource) | No | llms-guides/webhooks.txt |
| Mark objects ready to sync | POST | /accounting/ready-to-sync |
Yes | llms-api.txt |
| Report sync results | POST | /accounting/syncs (requires idempotency key) |
Yes | llms-api.txt |
| Register custom accounting connection | POST | /accounting/connection |
No | llms-api.txt |
| Create user | POST | (users resource) | No | llms-api.txt |
| Create / update custom record row | POST | /custom-records/custom-tables/{table_name}/rows |
Yes | llms-api.txt |
POST /bills -- you can push an invoice into Ramp programmatically (Pleo, Payhawk, Moss, Spendesk all lack this)| Platform | Ramp Connector? | Quality | Details |
|---|---|---|---|
| Workato | YES | Production -- 4.9/5 rating, 100+ active users | Generic CRUD action set: Create, Update, Delete, Search, Get-by-ID records in Ramp. HTTP connector available for any endpoint not in the prebuilt set. (workato.com/integrations/ramp) |
| Zapier | NOT FOUND | -- | No dedicated Ramp (the finance company) Zapier app located in marketplace. Multiple unrelated apps named "WorkRamp", "Ramper Marketing", "Ramper Pipeline" are easy to confuse. Confirmed gap vs Pleo (which has 4 triggers + 8 actions on Zapier). |
| Make.com | NOT FOUND (use HTTP module) | -- | No native Ramp module. Make.com community search returns generic scenario tools, not a Ramp connector. Would need to use generic HTTP Request module against Ramp API. |
| Celigo | NOT FOUND | -- | Not in marketplace |
| n8n | NOT FOUND | -- | No native or community node. Generic HTTP Request node would be required. |
| Tray.io | NOT CONFIRMED | -- | Not surfaced in public listings |
| Unified.to | YES (unified API tier) | Wrapper | Aggregator that includes Ramp -- not a direct iPaaS, but exposes Ramp via a unified accounting API. |
Workato is the most viable iPaaS path. Outside of that, the story is that Ramp's API is so straightforward and well-documented that the direct-API approach is the default -- there is essentially no Zapier or Make ecosystem around it. Combined with Ramp's three MCP servers, the official messaging is "use AI agents / MCP, or talk directly to the API; iPaaS isn't the primary channel."
Ramp has no DATEV integration of any kind. Confirmed by:
This is the single most consequential gap for a German DATEV-using customer. The closest workaround would be:
POST /accounting/connection, then implement the two-way sync) -- effectively writing a DATEV bridge yourselfNone of these match the out-of-the-box experience that Payhawk, Pleo, and most German-native tools (Circula, Yokoy, Moss, Finway) provide for DATEV today.
| System | Connection Type | Direction |
|---|---|---|
| NetSuite | API (native) | Bidirectional |
| Sage Intacct | API (native, two-way) | Bidirectional |
| Microsoft Dynamics 365 Business Central | API | Bidirectional |
| Microsoft Dynamics 365 Finance & Operations | API | Bidirectional |
| Workday Financial Management | API | Bidirectional |
| Acumatica | API | Bidirectional |
| Oracle Fusion Cloud | API | Bidirectional |
| QuickBooks Online | API | Bidirectional |
| QuickBooks Desktop | API | Bidirectional |
| Xero | API | Bidirectional |
| Zoho Books | API | Bidirectional |
| Trimble | API | -- |
| Pilot, Rillet, Puzzle, Finaloop, Finta, Carta, Quanta, Everest | API | Varied (often outsourced bookkeeping connectors) |
| DATEV | None | -- |
| SAP S/4HANA / B1 / ByDesign | Not listed | -- |
ADP Workforce Now (native connector), plus generic ERP/HR sync via API.
| Aspect | Detail |
|---|---|
| Available | YES, official |
| Confirmed event names | transactions.authorized, transactions.cleared, transactions.declined, transactions.ready_for_review, transactions.ready_to_sync, bills.created, bills.approved, bills.rejected, bills.paid, vendors.updated, entities.created, item_receipts.created, plus events on purchase_orders, applications, spend_requests, unified_requests, reimbursements |
| Subscription mgmt | Create / update / delete via API; scoped per resource (transactions:read, bills:read, etc.) |
| Delivery | HTTPS POST, 10-second timeout |
| Retries | Up to 10 retries with exponential backoff (0-60s initial delay) on 429/5xx. Instant failure on 3xx/4xx (except 429). |
| Idempotency | Same event ID across retries -- deduplicate on event ID. |
| Signature verification | X-Ramp-Signature header containing HMAC-SHA256 of raw request body, signed with webhook secret. Optional but recommended. |
| Real-time? | YES. Authorization webhook fires at the card-network authorization moment (before clearing). |
This is the strongest webhook posture in the peer set:
expense.* events, RSA-signedtransactions.* events including pre-clearing authorized, HMAC-SHA256Ramp Developer API is free on all plans. Confirmed via docs.ramp.com/llms-guides/getting-started.txt: "Sign up at ramp.com to provision an account, or request a sandbox to start building without one. ... Company -> Developer -> Create New App."
There is no API-gated tier and no per-call fee. The 200 req / 10s rate limit applies uniformly. Higher limits available on request via support ticket.
For comparison: Pleo gates Open API to Advanced ($109/mo+); Payhawk includes it on all paying plans; Ramp includes it on the free tier.
Ramp's commercial model is unique among the peer set:
| Plan | Per-User Cost | Inclusions | Notes |
|---|---|---|---|
| Ramp (Free) | $0 | Unlimited corporate cards, T&E with SMS/Slack completion, AP automated invoice extraction, basic accounting automation, budgets & reporting, Developer API | Interchange-funded. Revenue comes from card swipe fees, not subscriptions. |
| Ramp Plus | $15/user/month | Everything in Free, plus advanced automation, policy enforcement, comprehensive reporting, international + multi-currency | Per-user employee billing |
| Ramp Enterprise | Custom (median ~$21,600/yr per Vendr data) | Custom workflows, multi-entity management, advanced reporting, dedicated CS, custom integrations, SLA | Typical $0-$15k/mo platform fee depending on scale |
For a German company with ~30 cardholders:
Ramp is the cheapest by a wide margin -- but only if you don't need the multi-currency / international features (which gate to Plus or Enterprise).
transactions:read, accounting:read, accounting:write, users:read, bills:read, bills:write (start narrow)transactions.cleared, transactions.authorized, etc.| Pain Point with Pleo | Ramp Status | Source |
|---|---|---|
| Germany availability | GATED -- summer 2026 onboarding only via waitlist. Direct German-HQ customer cannot sign up today (May 2026). | ramp.com/europe |
| DATEV integration | NOT SUPPORTED. Not in any documentation, integrations page, or roadmap. This is the showstopper for a DATEV-using customer. | ramp.com/accounting-automation-software |
| Realtime transaction webhooks -- Pleo gates expense data behind customer-triggered export jobs | EXCELLENT. transactions.authorized, transactions.cleared, transactions.declined, transactions.ready_for_review, transactions.ready_to_sync. HMAC-SHA256 signed. Up to 10 retries with exponential backoff on 429/5xx. Pre-clearing authorization webhook is unique in the peer set. |
docs.ramp.com/llms-guides/webhooks.txt |
| Receipt URL longevity -- Pleo expires receipt URLs after 24h | NOT EXPLICITLY DOCUMENTED in public docs, but the API has a dedicated GET /receipts and GET /receipts/{id} endpoint with receipts:read scope. Industry pattern for fintech is signed S3/CloudFront URLs (typically 1-24h TTL). Cannot be confirmed from public web -- the Receipts guide page is JS-rendered SPA. Recommended empirical probe via authenticated sandbox: capture URL, re-fetch at T+1h / 6h / 24h / 7d. |
docs.ramp.com |
| Full CRUD on reference data (vendors, CoA, cost centers, tax codes) | BEST-IN-CLASS. All four resources have first-class CRUD endpoints with batch upload (up to 500 items). Cost centers / projects via Accounting Fields API (field definition + options). Tax codes + tax rates have separate first-class endpoints. Vendors have full CRUD including reactivate. Stronger than Pleo, Payhawk, Moss, Spendesk. | docs.ramp.com/llms-api.txt |
| API access pricing tier | FREE on all plans, including the $0 Ramp Free tier. Interchange-funded model. Best-in-class. | docs.ramp.com/llms-guides/getting-started.txt |
| Field completeness on transactions | Comprehensive: amount + currency (ISO 4217, integer-cents canonical representation), merchant (auto-populated normalized read-only entity from card network), user assignment, masked card (full PAN via cards:read_vault scope + PCI review), receipt associations, sync_status, FX info. MCC and raw descriptor are exposed via the underlying merchant entity. Virtual/physical flag is on the card resource. Approver chain is exposed via spend-program / spend-request resources, not directly on the transaction (subtle architectural difference vs Payhawk). Exact field list visible only in authenticated developer portal or OpenAPI spec. |
docs.ramp.com/llms-api.txt |
| Bill push capability -- Pleo cannot accept invoices via API | YES. POST /bills + POST /bills/{id}/attachments. Plus draft bills via POST /bills/drafts. Unique in the peer set -- Pleo, Payhawk, Moss, Spendesk all lack this. |
docs.ramp.com/llms-api.txt |
Ramp and Orcha have overlapping functionality in the Bill Pay module of Ramp -- but the customer scenario in scope explicitly excludes Ramp's Bill Pay module (the customer keeps Orcha for AP).
| Capability | Ramp (cards + reimbursements only) | Orcha |
|---|---|---|
| Invoice capture (OCR) | (yes, but Bill Pay module not in use) | YES (core product) |
| Card transaction capture | YES | NO |
| Card transaction pre-accounting | YES (AI-powered) | NO |
| Reimbursements | YES | NO |
| Cost center / project coding | YES (Accounting Fields) | YES |
| DATEV push | NO | YES (direct integration) |
| Approval workflows | YES (Spend Programs + Spend Controls) | Depends on customer |
| AI agent surface | YES (MCP) | TBD |
So with Bill Pay off, Ramp's responsibility is cards + reimbursements; Orcha's is AP invoices. But the two streams cannot converge in DATEV via Ramp -- Ramp will not export there. The customer would have to:
This is fundamentally worse than the Pleo or Payhawk options for a DATEV customer.
Scenario A: Orcha reads card transaction data FROM Ramp for unified spend analytics (PRIMARY USE CASE)
transactions.authorized (for pre-clearing visibility) and transactions.cleared (settled) -> Orcha endpointGET /developer/v1/transactions/{id} for full detailGET /transactions?sync_status=SYNC_READY for incremental polling sweep against missed webhooksGET /receipts/{id}) -- TTL verification required before deciding whether to mirror to Orcha S3Scenario B: Orcha writes reference data INTO Ramp for consistent coding (SECONDARY USE CASE)
POST /accounting/accounts (up to 500 in one call)POST /accounting/fields + POST /accounting/field-optionsPOST /accounting/tax/code/optionsPOST /accounting/vendors (up to 500 in one call)POST /accounting/syncs with idempotency keys to mark export completeScenario C: Customer migrates AP from Orcha to Ramp's Bill Pay module
Scenario D: Orcha pushes invoices into Ramp
POST /bills exists. Unique vs Pleo/Payhawk/Moss.Scenario E: Bridge Ramp transactions to DATEV via Orcha
| Dimension | Pleo | Payhawk | Ramp | Winner |
|---|---|---|---|---|
| Germany direct customer | YES | YES | NO (waitlist) | Pleo / Payhawk |
| DATEV native integration | One-click export | Bidirectional via DATEV Cloud Services | NONE | Payhawk |
| Realtime webhooks (transaction-level) | Partial (export-job gated) | YES | YES, including pre-clearing authorization | Ramp |
| Webhook signature | Svix (HMAC) | RSA SHA-256 | HMAC SHA-256 | Tie |
| API access tier | Advanced ($109/mo+) | All paying plans | Free tier | Ramp |
| Rate limit | 10 req/s | 15 req/s | ~20 req/s (200/10s) | Ramp |
| Vendor CRUD | Full | CSV workaround | Full + batch-500 | Ramp |
| CoA CRUD | Full | Categories API | Full + batch-500 | Ramp |
| Cost-center CRUD | Tags API | Custom Fields API | Accounting Fields API (field + options) | Tie |
| Tax code CRUD | Full | Custom Fields | Dedicated Tax Code + Tax Rates APIs | Ramp |
POST /bills (push invoice in) |
NO | NO | YES | Ramp |
| Auth model | OAuth 2.0 client_credentials | Static Bearer API key | OAuth 2.0 client_credentials (token TTL 10 days) | Tie |
| Zapier connector | YES | NO | NO | Pleo |
| Workato connector | NO | YES | YES | Tie |
| Approval API | Read-only | Read-only | Spend programs / spend requests configurable | Ramp (slight) |
| AI agent / MCP | NO | NO | YES (3 MCP servers) | Ramp |
| Multi-currency | YES | YES | YES (ISO 4217 canonical) | Tie |
On pure API capability, Ramp wins on almost every axis. On real-world availability and German operational requirements, Ramp loses on the only two axes that matter for this customer.
As with Payhawk, the single most important unverified question is the receipt URL TTL policy. Ramp has a first-class Receipts API (GET /receipts, GET /receipts/{id}) but the URL TTL policy is not stated in public documentation (the Receipts guide page is JS-rendered SPA, inaccessible via WebFetch).
Recommendation: same probe pattern as Payhawk -- before committing engineering effort, run an authenticated probe against a Ramp sandbox. Fetch a receipt, capture the URL, re-fetch at T+1h, T+6h, T+24h, T+72h, T+7d. Industry pattern for fintech is signed S3/CloudFront URLs with 1h-7d TTL; if TTL is short, mirror to Orcha storage at webhook time.
| Orcha Need | Ramp Support | Endpoint(s) | Confidence | Notes |
|---|---|---|---|---|
| Real-time card-tx ingestion | YES (webhooks, multiple event types per stage) | transactions.authorized, transactions.cleared, transactions.ready_to_sync |
HIGH | HMAC-SHA256 signed, 10x retry with exp backoff |
| Full transaction detail pull | YES | GET /transactions/{id} |
HIGH | Incl. merchant, currency, user, receipt assoc |
| Approver chain | YES (indirect) | Spend Programs / Spend Requests resources | MEDIUM | Different architecture vs peers |
| Raw card-tx pre-clearing visibility | YES | transactions.authorized webhook |
HIGH | Unique in peer set |
| Receipt document URLs | YES | GET /receipts/{id} |
HIGH | TTL unverified -- probe needed |
| Sync chart of accounts (write) | YES | POST /accounting/accounts (batch 500) |
HIGH | Full CRUD + batch |
| Sync cost centers / projects (write) | YES | Accounting Fields API + Field Options | HIGH | Two-tier model |
| Sync tax codes (write) | YES | Dedicated Tax Code + Tax Code Options + Tax Rates APIs | HIGH | First-class resources |
| Sync vendors / suppliers (write) | YES | POST /accounting/vendors (batch 500), PATCH, DELETE, reactivate |
HIGH | Best-in-class |
| Mark expense / bill as exported | YES | POST /accounting/syncs with idempotency key |
HIGH | Idempotency-keyed |
| Push invoices into Ramp | YES | POST /bills, POST /bills/drafts |
HIGH | Unique among peers, irrelevant for this customer |
| Read employees / users | YES | Users resource | HIGH | |
| Card issuance via API | YES | Deferred-task pattern | HIGH | Virtual, physical, agent (AI) |
| DATEV native integration | NO | -- | HIGH | Showstopper for this customer |
| German direct onboarding today | NO (waitlist) | -- | HIGH | Showstopper for this customer until summer 2026 |
Ramp's developer surface is materially ahead of Pleo, Payhawk, Moss, Spendesk, Yokoy, and every other tool in the spend-management peer set on:
POST /bills -- unique in the set)But for this specific customer scenario -- German company, DATEV for accounting, Orcha for AP, evaluating Pleo replacement for cards -- Ramp fails on the two non-API attributes that matter most:
These two gaps are larger and more concrete than any API advantage Ramp offers.
Assuming Ramp ships German direct onboarding in summer 2026 AND the customer is willing to either (a) accept manual / Workato-bridge DATEV export, or (b) wait for native DATEV, the integration would look identical to the Payhawk pattern:
[Card transactions] [Vendor invoices]
| |
v v
Ramp --- real-time webhook ---> Orcha (read-side: unified spend analytics)
| |
*** GAP *** |
No DATEV path v
(manual / iPaaS bridge needed) -> DATEV
^
|
Orcha (AP write directly to DATEV)
Read side (Ramp -> Orcha):
transactions.authorized + transactions.clearedGET /developer/v1/transactions/{id} for full detailGET /transactions?sync_status=SYNC_READY reconciliation sweepGET /receipts/{id} (verify TTL first; mirror to Orcha storage if short)Write side (Orcha -> Ramp):
POST /accounting/accounts (batch up to 500)POST /accounting/vendors (batch up to 500)POST /accounting/syncs with idempotency keysMissing piece: Ramp -> DATEV bridge. Either:
| Approach | Cost | Complexity | Value | Verdict |
|---|---|---|---|---|
| Read card tx via webhook + GET /transactions | $0 marginal (API free) | Low-Medium | High (if customer is on Ramp) | Strongest API path in the peer set, but customer can't be on Ramp yet |
| Mirror receipts to Orcha storage | $0 marginal | Low | Medium-High | Recommended pending TTL probe |
| Write reference data via Ramp accounting APIs | $0 marginal | Medium | Medium | Reference data is best-in-class CRUD |
| Build Ramp -> DATEV bridge in Orcha | Engineering: ~4-8 weeks | High | High (would unblock the customer) | Speculative; do not build without committed customer |
| Wait for Ramp's native DATEV | $0 | None | TBD | Currently the realistic path; timeline unknown |
| Use Payhawk instead | Payhawk subscription | -- | High | Recommended for this customer |
If Ramp becomes a real option later:
For the customer scenario (German company, DATEV + Orcha + Pleo replacement for cards): NO, do not pursue Ramp. Recommend Payhawk instead. Payhawk has the same realtime + free-API advantages that drove the Pleo evaluation, plus a best-in-class DATEV native integration, and is available to German customers today.
Ramp is materially better than Pleo, Payhawk, and the rest of the peer set on every pure API axis, BUT loses on the two non-negotiable customer requirements:
Revisit Ramp in Q4 2026 for a different German customer who either does not use DATEV or is willing to accept manual / iPaaS bridging for DATEV export. Until then, this research is filed as a reference baseline for the strongest possible spend-tool API in the market.