ml-connector
OdooRamp

Odoo and Ramp integration

Odoo handles your procurement, purchasing, and general ledger. Ramp manages corporate spend, bills, and expense allocation. Connecting the two keeps your purchase commitments and actual bills in sync across both systems. New purchase orders in Odoo flow into Ramp so your spend team sees what is committed, vendors stay aligned in both systems, and GL account mappings ensure bills land on the right cost centers and accounts every time.

How Odoo works

Odoo is available as Odoo Online (SaaS at subdomain.odoo.com), Odoo.sh (PaaS), or self-hosted with a custom domain. It exposes purchase orders, vendors, bills, GL accounts, and analytic accounts through XML-RPC over HTTP POST to the /xmlrpc/2/ endpoints and JSON-2 REST over HTTP POST to /json/2/ endpoints (Odoo 19+). Authentication uses an API key paired with a username, provided as a Bearer token in the Authorization header for JSON-2 or included in XML-RPC calls after authenticating with a uid. Odoo does not publish webhooks in production, so polling with high-water-mark timestamps on write_date is the recommended approach. API access requires the Custom pricing plan; OAuth2 is not supported in core Odoo.

How Ramp works

Ramp is a REST API-first platform for corporate spend management, accessible at https://api.ramp.com/developer/v1 for production or the sandbox environment. It authenticates with OAuth 2.0 using the Client Credentials flow (recommended for ERP integrations) with 10-day access tokens, or Authorization Code flow with 1-hour tokens. Ramp exposes bills, vendors, purchase orders, transactions, GL accounts, and custom accounting dimensions. Vendors and bills are created or updated via REST endpoints; purchase orders support read and patch operations only. Ramp supports push webhooks with HMAC-SHA256 signature verification for real-time events across bills, transactions, vendors, and payments, eliminating the need for polling.

What moves between them

The main flow runs from Odoo into Ramp. Purchase orders, vendors, and supplier information from Odoo are read and mapped into Ramp as bills or purchase orders so your spend team sees the full picture of commitments and obligations. Vendor records stay synchronized in both directions: new vendors created in Odoo flow to Ramp, and vendor updates from either system are reconciled. GL accounts and cost centers are mapped so bills created or updated in Ramp land on the correct GL dimensions in both systems. The sync runs on a schedule tied to your purchasing cycle.

How ml-connector handles it

ml-connector authenticates to Odoo using the API key method with a configured username and polls for new or updated purchase orders and vendors using high-water-mark timestamps on the write_date field. It stores the Odoo base URL per customer instance since Odoo uses tenant-specific domains with no shared hostname. On the Ramp side, ml-connector exchanges the OAuth 2.0 Client Credentials for a bearer token, refreshing automatically before expiry, and uses that token for all REST calls to create or update bills and vendors. Vendor names and payment terms are mapped between Odoo partner records and Ramp vendor objects; GL account codes in Odoo are matched to Ramp GL account IDs so bills reference valid accounts. ml-connector handles Ramp's constraint that vendors cannot be created directly via API and must be created implicitly through a bill or intake flow, so it bridges that by batching vendor creation into the bill creation workflow. Purchase orders are read from Odoo but flow into Ramp as reference attachments rather than PO objects since Ramp purchase orders are read-only. Every transaction is logged with a full audit trail and can be replayed if a downstream mapping or GL account validation fails.

A real-world example

A mid-market services firm runs Odoo for procurement and finance, tracking vendor relationships and purchase orders across multiple departments. They use Ramp for corporate cards and bill pay to manage spending across those same departments. Before the integration, purchase orders entered in Odoo were printed and hand-entered into Ramp, and the finance team spent time each month matching Odoo POs against Ramp bills to catch discrepancies and ensure the right cost centers were charged. With Odoo and Ramp connected, each purchase order flows into Ramp automatically with the correct vendor and GL account, so the spend team sees commitments in real time and bills post to the ledger with no re-keying. Month-end reconciliation between procurement and spend moves from manual to automated.

What you can do

  • Flow Odoo purchase orders and vendor data into Ramp as bills and vendors on a schedule you control.
  • Map Odoo cost centers and GL accounts to Ramp accounting dimensions so bills land on the correct accounts.
  • Authenticate Odoo with an API key and Ramp with OAuth 2.0 Client Credentials, handling token refresh automatically.
  • Synchronize vendor records in both directions so your vendor list stays current across procurement and spend systems.
  • Audit every record transfer and replay failed transactions if downstream mappings or GL account lookups need correction.

Questions

Which direction does data flow between Odoo and Ramp?
The main flow is from Odoo into Ramp. Purchase orders, vendors, and supplier information from Odoo are read and synchronized into Ramp as bills or vendor records. GL accounts and cost centers are mapped in both directions so bills reference valid Odoo dimensions. Vendor updates can flow both ways so your vendor lists stay consistent.
Does Odoo require special setup to enable API access?
Yes. API access in Odoo requires the Custom pricing plan, which is not included in free or standard tiers. You must generate an API key and configure a username with the integration user's access rights and record rules in Odoo. Odoo Online customers must have a password set by the admin before XML-RPC or JSON-2 authentication will work.
What happens when Ramp cannot create a vendor directly?
Ramp does not expose a direct vendor creation endpoint; vendors must be created implicitly via bills or a separate intake flow. ml-connector bridges this constraint by batching vendor creation into the bill creation workflow, so vendors are registered in Ramp as part of the bill sync without requiring a separate step.

Related integrations

Connect Odoo and Ramp

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started