{"slug":"crypto-tx-categorizer-production-up-railway-app-api-v1-categ-1df448","title":"Categorize crypto/bank transactions with optional invoice matching and label int","host":"crypto-tx-categorizer-production.up.railway.app","method":"POST","resource":"https://crypto-tx-categorizer-production.up.railway.app/api/v1/categorize","category":"market","description":"Categorize crypto/bank transactions with optional invoice matching and label interpretation","price_listed":0.1,"price_asked":0.1,"state":"answering","state_label":"Answering","checks_7d":1,"answered_7d":1,"latency_ms_median":1435,"reported_calls_30d":1,"reported_payers_30d":1,"networks":["eip155:8453"],"badge":"unverified","paid_checks_7d":0,"paid_ok_7d":0,"example_input":{"body":{"invoices":[{"amount":500,"client":"Acme Corp","issuedDate":"2026-09-25"}],"knownLabels":{"Figma":"Figma (software)"},"transactions":[{"amount":500,"asset":"USDC","counterparty":"Acme Corp","direction":"in","hash":"0xabc1","timestamp":"2026-10-01T09:30:00Z"},{"amount":15,"asset":"USDC","counterparty":"Figma","direction":"out","hash":"0xabc2","timestamp":"2026-10-02T14:05:00Z"}]},"bodyType":"json","method":"POST","type":"http"},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"properties":{"invoices":{"description":"Optional. Expected invoices to match against incoming payments.","items":{"properties":{"amount":{"exclusiveMinimum":0,"type":"number"},"asset":{"description":"Optional. If omitted, the invoice matches any dollar-equivalent asset (USD, USDC, USDT, DAI).","maxLength":20,"minLength":1,"type":"string"},"client":{"description":"Client name, matched against the counterparty.","maxLength":120,"minLength":1,"type":"string"},"issuedDate":{"description":"Optional ISO date; payments before it are not matched.","type":"string"}},"required":["client","amount"],"type":"object"},"maxItems":100,"type":"array"},"knownLabels":{"additionalProperties":{"maxLength":120,"minLength":1,"type":"string"},"description":"Optional. Counterparty -> label (e.g. \"Acme Corp (client)\"); labels are interpreted by keyword and direction.","maxProperties":100,"type":"object"},"ownWallets":{"description":"Optional. Transfers to/from these are categorized as Internal transfer.","items":{"maxLength":100,"minLength":1,"type":"string"},"maxItems":50,"type":"array"},"transactions":{"items":{"properties":{"amount":{"description":"Positive amount in the transaction's asset.","exclusiveMinimum":0,"type":"number"},"asset":{"description":"Currency or token symbol, e.g. USDC, ETH, USD.","maxLength":20,"minLength":1,"type":"string"},"counterparty":{"description":"Who the money came from / went to (address, name or description).","maxLength":200,"minLength":1,"type":"string"},"direction":{"description":"Money in (income) or out (expense) from the account owner's point of view.","enum":["in","out"],"type":"string"},"hash":{"description":"Your own unique id for the transaction (e.g. a tx hash or bank reference).","maxLength":120,"minLength":1,"type":"string"},"isSelf":{"description":"Optional. Set true when you already know this is a transfer between your own accounts.","type":"boolean"},"timestamp":{"description":"ISO 8601 date-time.","type":"string"}},"required":["hash","timestamp","direction","counterparty","amount","asset"],"type":"object"},"maxItems":150,"minItems":1,"type":"array"}},"required":["transactions"],"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"properties":{"summary":{"properties":{"byCategory":{"additionalProperties":{"type":"integer"},"type":"object"},"transactionCount":{"type":"integer"}},"required":["transactionCount","byCategory"],"type":"object"},"transactions":{"items":{"properties":{"amount":{"description":"Positive amount in the transaction's asset.","exclusiveMinimum":0,"type":"number"},"asset":{"description":"Currency or token symbol, e.g. USDC, ETH, USD.","maxLength":20,"minLength":1,"type":"string"},"category":{"enum":["Client payment","Contractor/expense payment","Software/tool expense","Network fee","Internal transfer","Unlabeled income","Unlabeled expense","Uncategorized/needs review"],"type":"string"},"counterparty":{"description":"Who the money came from / went to (address, name or description).","maxLength":200,"minLength":1,"type":"string"},"direction":{"description":"Money in (income) or out (expense) from the account owner's point of view.","enum":["in","out"],"type":"string"},"hash":{"description":"Your own unique id for the transaction (e.g. a tx hash or bank reference).","maxLength":120,"minLength":1,"type":"string"},"isSelf":{"description":"Optional. Set true when you already know this is a transfer between your own accounts.","type":"boolean"},"reason":{"description":"Why this category was chosen.","type":"string"},"timestamp":{"description":"ISO 8601 date-time.","type":"string"}},"required":["hash","timestamp","direction","counterparty","amount","asset","category","reason"],"type":"object"},"type":"array"},"unmatchedInvoices":{"items":{"properties":{"amount":{"exclusiveMinimum":0,"type":"number"},"asset":{"description":"Optional. If omitted, the invoice matches any dollar-equivalent asset (USD, USDC, USDT, DAI).","maxLength":20,"minLength":1,"type":"string"},"client":{"description":"Client name, matched against the counterparty.","maxLength":120,"minLength":1,"type":"string"},"issuedDate":{"description":"Optional ISO date; payments before it are not matched.","type":"string"}},"required":["client","amount"],"type":"object"},"type":"array"}},"required":["transactions","unmatchedInvoices","summary"],"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"},"history":[{"day":"2026-10-19","reachable":true,"status":402,"valid_402":true,"asked_usdc":0.1,"price_match":true,"latency_ms":1435,"error":null}],"description_full":"Categorize crypto/bank transactions with optional invoice matching and label interpretation","last_updated":"2026-10-19T01:52:58.239Z","schemes":["exact"]}