# Update transaction Update an existing transaction Endpoint: PUT /transactions/{transactionId} Version: 1.0.0 Security: ApiKeyAuth ## Path parameters: - `transactionId` (string, required) Transaction identifier Example: "txn-abc-123" ## Request fields (application/json): - `projectId` (string) Associated project ID Example: "nike-swoosh-commercial" - `accountId` (string) Associated account ID Example: "/production/equipment" - `contactId` (string) Associated contact ID Example: "contact-studio-001" - `description` (string) Transaction description Example: "ARRI RENTAL - Equipment" - `notes` (string) Additional notes Example: "Camera and lighting equipment for week 2" ## Response 200 fields (application/json): - `id` (string, required) Transaction identifier Example: "txn-abc-123" - `type` (string, required) Transaction type Enum: "bank.deposit", "bank.withdrawal", "bank.ach", "bank.wire", "card.spend", "card.payment", "card.dispute", "card.refund", "card.cashback" - `status` (string, required) Transaction status Enum: "posted", "pending", "void" - `subStatus` (string,null) Transaction sub-status Enum: "settled", "refund", "reverse", "rejected" - `description` (string, required) Transaction description Example: "ARRI RENTAL HOUSE" - `amount` (number, required) Transaction amount Example: 599.88 - `date` (string, required) Transaction date Example: "2024-03-18T16:00:00Z" - `projectId` (string,null) Associated project ID Example: "nike-swoosh-commercial" - `hasAccount` (boolean, required) Whether transaction has account assignment Example: true - `isActualized` (boolean, required) Whether transaction has been converted to actual - `source` (object) - `source.id` (string, required) Source identifier Example: "src-card-001" - `source.type` (string, required) Source type (bank, card, etc.) Example: "card" - `source.name` (string, required) Source name Example: "Production Company Card" - `source.last4` (string, required) Last 4 digits of source identifier Example: "4242" - `attachments` (array) Attached files - `attachments.id` (string, required) File identifier (DigitalOcean Spaces object key) Example: "files/2024/03/budget-report.pdf" - `attachments.name` (string, required) Original filename Example: "call-sheet-day-3.pdf" - `attachments.type` (string, required) MIME type Example: "application/pdf" - `attachments.size` (integer, required) File size in bytes Example: 1048576 - `contact` (object) - `contact.id` (string, required) Contact identifier Example: "contact-studio-001" - `contact.contactTitle` (string,null) Contact display title Example: "Sunset Studios - Production Company" - `contact.name` (string,null) Contact name Example: "Alex Rivera" - `contact.email` (string,null) Contact email address Example: "alex.rivera@sunsetstudios.com" - `contact.company` (string,null) Contact company Example: "Sunset Studios Inc." - `contact.type` (string,null) Contact type (Person, Company, etc.) Example: "Person" - `contact.jobTitle` (string,null) Contact job title Example: "Director of Photography" - `contact.rate` (number,null) Contact hourly rate Example: 150 - `contact.secureInfo` (object) - `contact.secureInfo.address` (string,null) Contact address Example: "123 Sunset Blvd, Los Angeles, CA 90028" - `contact.secureInfo.phone` (string,null) Contact phone number Example: "310-555-1234" - `contact.secureInfo.taxIdLast4` (string,null) Last 4 digits of tax ID Example: "4567" - `contact.origin` (object) - `contact.origin.origin` (string,null) How the contact was created Enum: "onboarding", "manual" - `contact.origin.createdAt` (string,null) Contact creation timestamp Example: "2024-02-15T08:00:00Z" - `contact.origin.createdByUser` (object) - `contact.origin.createdByUser.id` (string, required) User identifier Example: "user-001" - `contact.origin.createdByUser.name` (string, required) User name Example: "Sarah Chen" - `contact.origin.createdByUser.email` (string, required) User email address Example: "sarah.chen@sunsetstudios.com" - `contact.startwork` (array) Startwork agreements - `contact.startwork.id` (string, required) Startwork agreement identifier Example: "startwork-001" - `contact.startwork.title` (string, required) Agreement title Example: "Independent Contractor Agreement" - `contact.startwork.signedOn` (string, required) Signature timestamp Example: "2024-03-01T10:00:00Z" - `contact.linkedUser` (object) - `contact.bankInfo` (array) Banking information - `contact.bankInfo.id` (string, required) Bank account identifier Example: "bank-acc-001" - `contact.bankInfo.bankName` (string, required) Bank name Example: "Chase Bank" - `contact.bankInfo.accountType` (string, required) Account type (checking, savings, etc.) Example: "checking" - `contact.bankInfo.accountLast4` (string, required) Last 4 digits of account number Example: "4567" - `contact.taxDocuments` (array) Tax documents - `contact.attachments` (array) File attachments - `contact.projects` (object) Associated projects - `project` (object) - `project.id` (string, required) Project identifier (alias in user mode, UUID in system mode) Example: "nike-swoosh-commercial" - `project.name` (string,null) Project display name Example: "Nike Swoosh Commercial" - `project.icon` (string,null) Project icon or emoji Example: "☀️" - `project.imageUrl` (string,null) Project image URL Example: "https://example.com/project-banner.jpg" - `project.spaceId` (string,null) Associated project space ID (deprecated, use space object) Example: "commercial-productions" - `project.space` (object,null) Project space/folder information - `project.space.id` (string) Space identifier Example: "commercial-productions" - `project.space.name` (string) Space display name Example: "Commercial Productions" - `project.templateId` (string,null) Template project ID (deprecated, use template object) Example: "commercial-template" - `project.template` (object,null) Template project information - `project.template.id` (string) Template identifier Example: "commercial-template" - `project.template.name` (string) Template name Example: "Commercial Template" - `project.status` (string, required) Project status Enum: "active", "archived" - `project.labels` (array) Project labels for categorization Example: ["nike","q2-2024","post-production"] - `project.createdAt` (string, required) Project creation timestamp Example: "2024-01-15T10:00:00Z" - `project.updatedAt` (string, required) Project last update timestamp Example: "2024-03-20T14:30:00Z" - `account` (object) - `account.type` (string, required) Type of budget line Enum: "line", "account", "subtotal", "markup", "fringes" - `account.id` (string, required) Budget line identifier (system ID) Example: "line-001" - `account.accountId` (string,null) Account identifier (user-friendly ID like account code) Example: "2150" - `account.description` (string,null) Budget line description Example: "RED Camera Package Rental" - `account.path` (string, required) Hierarchical path in budget tree (e.g., /2000/2150) Example: "/production/equipment/cameras" - `account.totals` (object, required) Calculated totals for each phase Example: {"estimate":25000,"actual":22500,"variance":2500} - `account.tags` (array) Tags for categorization and filtering Example: ["Day-1","A-Camera","Equipment"] - `account.phaseData` (object) Detailed phase-specific data (expandable) - `actual` (object) - `actual.id` (string, required) Actual entry identifier Example: "actual-001" - `actual.description` (string,null) Actual entry description Example: "Camera rental for shoot days" - `actual.amount` (number,null) Actual amount Example: 5250 - `actual.date` (string,null) Actual entry date Example: "2024-03-15T12:00:00Z" - `actual.accountId` (any) Associated account ID(s) - `actual.expanded` (boolean, required) Whether this actual has sub-actuals - `actual.type` (string) Actual entry type Example: "invoice" - `actual.ref` (string,null) Reference identifier Example: "INV-2024-0315" - `actual.payId` (string,null) Payment identifier Example: "pay-xyz-789" - `actual.status` (string) Actual entry status Example: "completed" - `actual.notes` (string,null) Additional notes Example: "Q1 advertising budget" - `actual.tags` (array) Associated tags - `actual.purchaseOrderId` (string,null) Associated purchase order ID Example: "po-2024-001" - `actual.transactionId` (string,null) Associated transaction ID Example: "txn-abc-123" - `actual.subactuals` (array) Sub-actual entries - `actual.subactuals.id` (string, required) Sub-actual identifier Example: "subactual-001" - `actual.subactuals.description` (string,null) Sub-actual description Example: "Lighting equipment rental" - `actual.subactuals.amount` (number, required) Sub-actual amount Example: 2500 - `actual.subactuals.date` (string,null) Sub-actual date Example: "2024-03-10T09:00:00Z" - `actual.subactuals.accountId` (string,null) Associated account ID Example: "/marketing/social-media" ## Response 400 fields (application/json): - `error` (string, required) Error message Example: "Invalid request parameters" - `details` (object) Additional error details Example: {"field":"projectId","reason":"Project not found"} - `code` (string) Error code Example: "VALIDATION_ERROR" ## Response 401 fields (application/json): - `error` (string, required) Error message Example: "Invalid request parameters" - `details` (object) Additional error details Example: {"field":"projectId","reason":"Project not found"} - `code` (string) Error code Example: "VALIDATION_ERROR" ## Response 404 fields (application/json): - `error` (string, required) Error message Example: "Invalid request parameters" - `details` (object) Additional error details Example: {"field":"projectId","reason":"Project not found"} - `code` (string) Error code Example: "VALIDATION_ERROR" ## Response 500 fields (application/json): - `error` (string, required) Error message Example: "Invalid request parameters" - `details` (object) Additional error details Example: {"field":"projectId","reason":"Project not found"} - `code` (string) Error code Example: "VALIDATION_ERROR"