Skip to main content
AI/MLjeremylongshore

ramp-core-workflow-b

"Ramp core workflow b \u2014 corporate card and expense management API\

Stars
2,267
Source
jeremylongshore/claude-code-plugins-plus-skills
Updated
2026-05-31
Slug
jeremylongshore--claude-code-plugins-plus-skills--ramp-core-workflow-b
View on GitHubRaw SKILL.md

// install — copy + paste into any project

mkdir -p .claude/skills && curl -fsSL https://raw.githubusercontent.com/jeremylongshore/claude-code-plugins-plus-skills/HEAD/plugins/saas-packs/ramp-pack/skills/ramp-core-workflow-b/SKILL.md -o .claude/skills/ramp-core-workflow-b.md

Drops the SKILL.md into .claude/skills/ramp-core-workflow-b.md. Works with Claude Code, Cursor, and any agent that loads SKILL.md files from .claude/skills/.

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