Skip to main content
Corporate card and spend-management API for reading transactions, bills, vendors, cards, and reimbursements, and for creating/updating spend programs, limits, and accounting records on a Ramp business. Best when an agent needs to query or act on a company’s actual card and AP activity. Unlike accounting APIs (QuickBooks, Xero), Ramp is the system of record for the underlying card swipes and bill payments themselves. 18 example endpoints available through Lava’s AI Gateway. See the Ramp API docs for full documentation.
This provider requires your own credentials — connect your API key or OAuth account before use.
This is a catch-all provider — any valid URL under https://api.ramp.com/developer/v1 is supported. Any Ramp Developer API endpoint. Construct URL as https://api.ramp.com/developer/v1/{path}. Card lifecycle actions (freeze/unfreeze/terminate) are POSTs to /cards/{card_id}/deferred/{suspension|unsuspension|termination} with a { “idempotency_key”: ”…” } body — each returns a deferred task you poll at GET /cards/deferred/status/{task_id}. PATCH /cards/{card_id} only edits display name, owner, and spending limits; it has NO state field, and a card’s state and spending_restrictions.suspended are read-only (returned by GET, rejected on write). See https://docs.ramp.com/developer-api/v1 for the full reference. The endpoints below are curated examples.

Endpoints

List card transactions. Supports synced_after/from_date/to_date filters and pagination.

GET https://api.ramp.com/developer/v1/transactions?page_size=100 — Free
const data = await lava.gateway('https://api.ramp.com/developer/v1/transactions?page_size=100', { method: 'GET' });

List bills (accounts payable).

GET https://api.ramp.com/developer/v1/bills?page_size=100 — Free
const data = await lava.gateway('https://api.ramp.com/developer/v1/bills?page_size=100', { method: 'GET' });

Create an approved bill and select the payment method (ACH, check, wire, SWIFT, or Ramp card) in one call. Bills created via the API skip the draft phase. Resolve vendor_id, vendor_contact_id, entity_id, and source_bank_account_id from the entities/vendors endpoints first.

POST https://api.ramp.com/developer/v1/bills — Free
const data = await lava.gateway('https://api.ramp.com/developer/v1/bills', {
  body: {
"vendor_id": "{vendor_id}",
"vendor_contact_id": "{vendor_contact_id}",
"entity_id": "{entity_id}",
"invoice_number": "INV-2026-001",
"invoice_currency": "USD",
"issued_at": "2026-05-15",
"due_at": "2026-06-15",
"payment_method": "ACH",
"payment_details": {
  "payment_arrival_date": "2026-06-15",
  "source_bank_account_id": "{source_bank_account_id}",
  "vendor_account_id": "{vendor_account_id}"
}
},
});

List physical and virtual cards.

GET https://api.ramp.com/developer/v1/cards?page_size=100 — Free
const data = await lava.gateway('https://api.ramp.com/developer/v1/cards?page_size=100', { method: 'GET' });

Create a virtual card for a user with a spending limit.

POST https://api.ramp.com/developer/v1/cards/deferred/virtual — Free
const data = await lava.gateway('https://api.ramp.com/developer/v1/cards/deferred/virtual', {
  body: {
"display_name": "Vendor X subscription",
"user_id": "{user_id}",
"spending_restrictions": {
  "amount": 50000,
  "interval": "MONTHLY"
}
},
});

List vendors on the Ramp business.

GET https://api.ramp.com/developer/v1/vendors?page_size=100 — Free
const data = await lava.gateway('https://api.ramp.com/developer/v1/vendors?page_size=100', { method: 'GET' });

Create a vendor on the Ramp business. Requires country and at least one contact (business_vendor_contacts, whose email is mandatory).

POST https://api.ramp.com/developer/v1/vendors — Free
const data = await lava.gateway('https://api.ramp.com/developer/v1/vendors', {
  body: {
"name": "Acme Supplies",
"country": "US",
"business_vendor_contacts": {
  "email": "ap@acme.com"
}
},
});

Update an existing vendor — accounting fields, country/state, description, or is_active (to deactivate). There is no name field on update.

PATCH https://api.ramp.com/developer/v1/vendors/{vendor_id} — Free
const data = await lava.gateway('https://api.ramp.com/developer/v1/vendors/{vendor_id}', { method: 'PATCH', body: {"is_active":false} });

List vendor credits (credit memos) for the business. Read-only: Ramp exposes vendor credits for reading only — there is NO API to create or upload a vendor credit. Vendor credits are issued in the Ramp UI from a paid bill and synced to accounting.

GET https://api.ramp.com/developer/v1/vendors/credits?page_size=100 — Free
const data = await lava.gateway('https://api.ramp.com/developer/v1/vendors/credits?page_size=100', { method: 'GET' });

List employee reimbursement requests.

GET https://api.ramp.com/developer/v1/reimbursements?page_size=100 — Free
const data = await lava.gateway('https://api.ramp.com/developer/v1/reimbursements?page_size=100', { method: 'GET' });

List users on the Ramp business.

GET https://api.ramp.com/developer/v1/users?page_size=100 — Free
const data = await lava.gateway('https://api.ramp.com/developer/v1/users?page_size=100', { method: 'GET' });

Get the connected Ramp business profile.

GET https://api.ramp.com/developer/v1/business — Free
const data = await lava.gateway('https://api.ramp.com/developer/v1/business', { method: 'GET' });

List spend programs on the Ramp business.

GET https://api.ramp.com/developer/v1/spend-programs?page_size=100 — Free
const data = await lava.gateway('https://api.ramp.com/developer/v1/spend-programs?page_size=100', { method: 'GET' });

Edit a card: display name, owner (new_user_id), entity, notification settings, and spending limits. This endpoint does NOT freeze a card — it has no state field, and spending_restrictions.suspended and the card’s state are read-only (returned by GET, rejected on write with DEVELOPER_7001). To freeze, unfreeze, or terminate a card use the deferred actions below; setting spending_restrictions.amount to 0 caps the limit but does not block new charges.

PATCH https://api.ramp.com/developer/v1/cards/{card_id} — Free
const data = await lava.gateway('https://api.ramp.com/developer/v1/cards/{card_id}', {
  method: 'PATCH',
  body: {
"display_name": "Marketing tools",
"spending_restrictions": {
  "amount": 100000,
  "interval": "MONTHLY"
}
},
});

Freeze (suspend) a card — the only way to block new charges. This is NOT a PATCH field and NOT part of spending_restrictions. The action is asynchronous: it returns a deferred task id; poll GET /cards/deferred/status/{task_id} to confirm the card reached the SUSPENDED state. Reverse with the unsuspension endpoint.

POST https://api.ramp.com/developer/v1/cards/{card_id}/deferred/suspension — Free
const data = await lava.gateway('https://api.ramp.com/developer/v1/cards/{card_id}/deferred/suspension', { body: {"idempotency_key":"00000000-0000-0000-0000-000000000000"} });

Unfreeze (unsuspend) a previously suspended card, restoring it to ACTIVE. Asynchronous — returns a deferred task id; poll GET /cards/deferred/status/{task_id} to confirm.

POST https://api.ramp.com/developer/v1/cards/{card_id}/deferred/unsuspension — Free
const data = await lava.gateway('https://api.ramp.com/developer/v1/cards/{card_id}/deferred/unsuspension', { body: {"idempotency_key":"00000000-0000-0000-0000-000000000000"} });

Permanently terminate a card. This is IRREVERSIBLE — unlike suspension, a terminated card cannot be reactivated. Asynchronous — returns a deferred task id; poll GET /cards/deferred/status/{task_id} to confirm.

POST https://api.ramp.com/developer/v1/cards/{card_id}/deferred/termination — Free
const data = await lava.gateway('https://api.ramp.com/developer/v1/cards/{card_id}/deferred/termination', { body: {"idempotency_key":"00000000-0000-0000-0000-000000000000"} });

Poll the result of a deferred card action. Every card mutation (suspension, unsuspension, termination, and virtual/physical card creation) returns a task id rather than completing inline; fetch this until the task reports success and exposes the resulting card.

GET https://api.ramp.com/developer/v1/cards/deferred/status/{task_id} — Free
const data = await lava.gateway('https://api.ramp.com/developer/v1/cards/deferred/status/{task_id}', { method: 'GET' });

Next Steps

All Providers

Browse all supported AI providers

Forward Proxy

Learn how to construct proxy URLs and authenticate requests