{"uid":"cap_tGcnSBxfiBA-x810YbHeZ","slug":"crypto-transaction-categorizer-8d85c1de","name":"Crypto Transaction Categorizer","description":"Categorize crypto/bank transactions with optional invoice matching and label interpretation","url":"https://crypto-tx-categorizer-production.up.railway.app/api/v1/categorize?utm_source=zero.xyz","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"invoices":{"type":"array","items":{"type":"object","required":["client","amount"],"properties":{"asset":{"type":"string","maxLength":20,"minLength":1,"description":"Optional. If omitted, the invoice matches any dollar-equivalent asset (USD, USDC, USDT, DAI)."},"amount":{"type":"number","exclusiveMinimum":0},"client":{"type":"string","maxLength":120,"minLength":1,"description":"Client name, matched against the counterparty."},"issuedDate":{"type":"string","description":"Optional ISO date; payments before it are not matched."}}},"maxItems":100,"description":"Optional. Expected invoices to match against incoming payments."},"ownWallets":{"type":"array","items":{"type":"string","maxLength":100,"minLength":1},"maxItems":50,"description":"Optional. Transfers to/from these are categorized as Internal transfer."},"knownLabels":{"type":"object","description":"Optional. Counterparty -> label (e.g. \"Acme Corp (client)\"); labels are interpreted by keyword and direction.","maxProperties":100,"additionalProperties":{"type":"string","maxLength":120,"minLength":1}},"transactions":{"type":"array","items":{"type":"object","required":["hash","timestamp","direction","counterparty","amount","asset"],"properties":{"hash":{"type":"string","maxLength":120,"minLength":1,"description":"Your own unique id for the transaction (e.g. a tx hash or bank reference)."},"asset":{"type":"string","maxLength":20,"minLength":1,"description":"Currency or token symbol, e.g. USDC, ETH, USD."},"amount":{"type":"number","description":"Positive amount in the transaction's asset.","exclusiveMinimum":0},"isSelf":{"type":"boolean","description":"Optional. Set true when you already know this is a transfer between your own accounts."},"direction":{"enum":["in","out"],"type":"string","description":"Money in (income) or out (expense) from the account owner's point of view."},"timestamp":{"type":"string","description":"ISO 8601 date-time."},"counterparty":{"type":"string","maxLength":200,"minLength":1,"description":"Who the money came from / went to (address, name or description)."}}},"maxItems":150,"minItems":1}}},"responseSchema":null,"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.1","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.1/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.1","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.1","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_rxG6b37SExd1gD-VH0nQl","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.1","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Categorizes crypto and bank transactions into accounting categories with optional invoice matching and counterparty label interpretation","exampleAgentPrompt":"Categorize these 5 USDC transactions from my wallet — here are the hashes, timestamps, directions, counterparties, and amounts — and match them against my open invoices for Acme Corp ($500) and Globex ($1200). My own wallet addresses are 0xABC and 0xDEF, and label Acme Corp as 'client'.","exampleUseCases":[{"title":"Freelancer invoice reconciliation","prompt":"I have 10 incoming crypto transactions this month and 3 open invoices — one for $800 from ClientA, one for $1200 from ClientB, and one for $500 from ClientC. Can you categorize all the transactions and tell me which ones match my invoices?"},{"title":"Crypto bookkeeping for tax prep","prompt":"I need to categorize all my ETH and USDC transactions from last quarter for tax purposes. Here are the transaction hashes, timestamps, and counterparties — please classify each one as income, expense, or internal transfer. My own wallets are 0x111 and 0x222."},{"title":"Counterparty label-based classification","prompt":"Can you categorize these 20 blockchain transactions and interpret the counterparty labels I've set up? I've labeled wallet 0xAAA as 'Acme Corp (client)', 0xBBB as 'AWS (vendor)', and 0xCCC as 'Payroll (employee)'. Use those to figure out the right category for each transaction."}],"resultDescription":"Returns a list of categorized transactions, each assigned an accounting category (e.g. income, expense, internal transfer), along with invoice match results indicating which transactions correspond to specific outstanding invoices, and interpreted labels for known counterparties.","failureModes":["Missing required transaction fields (hash, timestamp, direction, counterparty, amount, asset) returns a validation error","Exceeding 100 invoices or 50 own-wallet entries returns a limit exceeded error","Invalid ISO 8601 timestamps cause parsing failures","Ambiguous counterparty names may result in incorrect or no invoice matches","Non-positive or zero amounts are rejected due to exclusiveMinimum constraint","Payment failure via x402 protocol results in 402 response before processing"],"whenToPreferThis":"Choose this endpoint when you need to classify crypto or bank transactions into accounting categories, especially when you want to match payments against issued invoices or interpret counterparty labels for bookkeeping purposes. It is ideal for freelancers, DAOs, or finance teams reconciling on-chain payments with expected receivables. Prefer it over generic blockchain analytics tools when invoice matching and label-based categorization are required.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-28T12:31:13.656Z","isFirstParty":false,"canonicalSlug":"crypto-transaction-categorizer-8d85c1de"}