Troubleshooting

Error messages from trips, payments, refunds, approvals, and setup, with causes and fixes.

Trips and proposals

MessageCause and fix
Client balance must be zero before this statusThe client still owes the planning fee or an agency_collects component. Record the payment first
Invalid transition X → YEach state has one next state. Check the order in Trips
Trip changed concurrentlyAnother action moved the trip. Reload and retry
Only draft proposals may be sentThe proposal was already sent. Build a new version
Proposal not found, Itinerary not found, Invoice not foundThe link is wrong, too short, or no longer valid. Send a new link
Proposal no longer availableThe proposal was superseded or declined
Component cannot be bookedOnly quoted or held components can be booked

Payments and funds

MessageCause and fix
Idempotency key requiredOperator mutations need idempotencyKey in input
Invoice not payableThe invoice is void or already paid
Invalid payment amountAmount is zero, or above what is still owed
Manual payments require check, wire, or cash evidenceUse one of those methods
Payment reference requiredAdd a reference to a manual payment
Insufficient trip client fundsThe movement would take the trip's balance below zero
Supplier payment exceeds remaining net costThe component's net cost is already paid
Planning fee transfer exceeds paid planning invoicesCollect and pay the planning fee first
Component is not collected by this tripThe component is not agency_collects, or belongs to another trip
External funds require a corresponding reconciled cash movementReceipts, supplier payments, and refunds cannot be reversed
Entry already reversedThe entry has a reversal

Card payment does not appear when the publishable key is missing or does not start with pk_test_, or when STRIPE_SECRET_KEY is missing. The page then shows "Payments are not configured".

Refunds

MessageCause and fix
Refund exceeds the amount still refundablePaid less refunded less refunds still processing. Lower the amount
Refund amount must be positiveEnter at least one cent
Payment is not refundableThe payment has not succeeded
Manual payments are refunded outside the systemOnly card payments refund through the app
Idempotency key was already used with a different refundUse a new key for a different amount or reason
Independent manager approval is requiredThe amount is above the refund threshold. Request and get an approval
Refund exceeds the amount refundable after the cancellation penaltyThe refund on a cancellation is above the sell price less the penalty

A refund with status unknown means Stripe did not answer clearly. Do not retry with a new key; check the payment in Stripe first.

Approvals

MessageCause and fix
The requester cannot decide their own approvalAsk another person
Not authorized to decide approvalsDeciding needs canManageSettings
Approval does not match this requestThe action, target, amount, or reason differs from the request
Approval must come from a different userThe approver is the requester
Approval is consumed, Approval was already used or has expiredEach approval works once. Request a new one
Approval has expiredApprovals expire after one hour

Commissions

MessageCause and fix
Receipt allocations must equal amountThe allocations do not add up to the receipt
Allocation supplier/currency mismatchA component belongs to another supplier or currency
Only expected or short-paid commission can be written offThe component is already received or written_off
Reason requiredWrite-offs and refunds need a reason

Setup

SymptomCause and fix
Setup card is missingThe user lacks canManageOnboarding, onboarding is completed or dismissed, or trips already exist
Unknown setup phaseThe phase or template name is wrong
Seeded advisors cannot sign inThey have a random password. Reset it
Build changes the databasenpm run dev and npm run build run migrations. Use a disposable database

On this page