Skills Product & Business Manage Corporate Expenses and Accounting Sync

Manage Corporate Expenses and Accounting Sync

v20260423
ramp-core-workflow-b
This workflow integrates with the Ramp API to manage corporate card transactions and expenses. It allows users to list, filter, and retrieve detailed transaction data, and crucially, sync these expenses directly to an accounting system (ERP). The process includes mapping transactions to general ledger accounts, making it ideal for finance teams handling expense reconciliation and accounting processes.
Get Skill
444 downloads
Overview

Ramp Core Workflow B

Overview

Manage transactions and expenses: list, categorize, attach receipts, and sync to accounting.

Prerequisites

  • Completed ramp-core-workflow-a

Instructions

Step 1: List Transactions with Filters

resp = requests.get(f"{BASE}/transactions", headers=headers, params={
    "start_date": "2026-01-01",
    "end_date": "2026-03-22",
    "merchant_name": "Amazon",
    "page_size": 50,
})
transactions = resp.json()["data"]
total = sum(tx["amount"] for tx in transactions)
print(f"Amazon spend: ${total/100:.2f} across {len(transactions)} transactions")

Step 2: Get Transaction Details

tx_id = transactions[0]["id"]
detail = requests.get(f"{BASE}/transactions/{tx_id}", headers=headers)
tx = detail.json()
print(f"Amount: ${tx['amount']/100:.2f}")
print(f"Merchant: {tx['merchant_name']}")
print(f"Category: {tx['sk_category_name']}")
print(f"Card: {tx['card_holder']['first_name']} — last4: {tx['card_last_four']}")

Step 3: Sync to Accounting

# Fetch transactions ready for accounting sync
sync_resp = requests.get(f"{BASE}/accounting/transactions", headers=headers, params={
    "sync_ready": True,
    "page_size": 100,
})
for tx in sync_resp.json()["data"]:
    # Map to your ERP's chart of accounts
    journal_entry = {
        "date": tx["user_transaction_time"],
        "amount": tx["amount"],
        "account": map_category_to_gl(tx["sk_category_name"]),
        "vendor": tx["merchant_name"],
        "external_id": tx["id"],
    }
    sync_to_erp(journal_entry)

# Mark as synced
requests.post(f"{BASE}/accounting/transactions/sync", headers={**headers, "Content-Type": "application/json"}, json={
    "transaction_ids": [tx["id"] for tx in sync_resp.json()["data"]],
})

Output

  • Transactions filtered by date, merchant, category
  • Detailed transaction data with card holder info
  • Accounting sync with GL mapping

Error Handling

Error Cause Solution
Empty results Wrong date range Check start_date/end_date format
Sync conflict Already synced Check sync status before re-syncing
Missing category Uncategorized transaction Use default GL account

Resources

Next Steps

Handle events: ramp-webhooks-events

Info
Name ramp-core-workflow-b
Version v20260423
Size 2.91KB
Updated At 2026-04-28
Language