FuelLabs/fuels-ts · error · FuelError
INVALID_TRANSACTION_STATUS
INVALID_TRANSACTION_STATUS
Error message
Invalid transaction status: ${gqlStatus}. What it means
Thrown by `getTransactionStatusName()` (transaction-summary/status.ts) when the GraphQL status string from the node does not match any known status name (FailureStatus, SuccessStatus, SubmittedStatus, SqueezedOutStatus, PreconfirmationSuccessStatus, PreconfirmationFailureStatus). The default branch prevents the summary from continuing with an undefined status enum value.
Source
Thrown at packages/account/src/providers/transaction-summary/status.ts:35
} from './types';
/** @hidden */
export const getTransactionStatusName = (gqlStatus: GqlTransactionStatusesNames) => {
switch (gqlStatus) {
case 'FailureStatus':
return TransactionStatus.failure;
case 'SuccessStatus':
return TransactionStatus.success;
case 'SubmittedStatus':
return TransactionStatus.submitted;
case 'SqueezedOutStatus':
return TransactionStatus.squeezedout;
case 'PreconfirmationSuccessStatus':
return TransactionStatus.preconfirmationSuccess;
case 'PreconfirmationFailureStatus':
return TransactionStatus.preconfirmationFailure;
default:
throw new FuelError(
ErrorCode.INVALID_TRANSACTION_STATUS,
`Invalid transaction status: ${gqlStatus}.`
);
}
};
/** @hidden */
export const extractResolvedOutputs = (
serializedOutputs?: SerializedResolvedOutput[] | null
): ResolvedOutput[] => {
const resolvedOutputs: ResolvedOutput[] = [];
serializedOutputs?.forEach(({ utxoId, output }) =>
resolvedOutputs.push({
utxoId,
output: deserializeProcessedTxOutput(output) as OutputChange | OutputVariable,
})
);
return resolvedOutputs;View on GitHub (pinned to b3f37c91ac)
Solutions
- Upgrade @fuel-ts packages to align with the connected node version.
- Verify the provider URL points to a compatible node.
- If status is transient/unknown, poll again or fall back to a raw query.
Example fix
// before const status = getTransactionStatusName(gqlStatus); // throws on unknown // after const KNOWN = ['FailureStatus','SuccessStatus','SubmittedStatus','SqueezedOutStatus','PreconfirmationSuccessStatus','PreconfirmationFailureStatus']; const status = KNOWN.includes(gqlStatus) ? getTransactionStatusName(gqlStatus as any) : TransactionStatus.submitted;
Defensive patterns
Strategy: validation
Validate before calling
const KNOWN_STATUS = ['FailureStatus','SuccessStatus','SubmittedStatus','SqueezedOutStatus','PreconfirmationSuccessStatus','PreconfirmationFailureStatus'];
if (!KNOWN_STATUS.includes(gqlStatus)) throw new Error(`unknown status ${gqlStatus}`); Type guard
function isKnownGqlStatus(s: unknown): boolean {
return typeof s === 'string' && ['FailureStatus','SuccessStatus','SubmittedStatus','SqueezedOutStatus','PreconfirmationSuccessStatus','PreconfirmationFailureStatus'].includes(s);
} Try / catch
null
Prevention
- Align SDK version with the connected node so status names are recognized.
- Point the provider at a compatible node.
- Poll again if a transient/unknown status appears.
When it happens
Trigger: Building a transaction summary where `gqlTransaction.status` carries a status name string not in the SDK's known set. Reached internally from `getTransactionSummary`.
Common situations: Node/SDK version skew: the node emits a new status type (e.g. a new preconfirmation variant) that the SDK does not recognize; network returns a malformed status string; GraphQL schema changed across versions.
Related errors
- UNSUPPORTED_TRANSACTION_TYPE
- INVALID_TRANSACTION_INPUT
- INVALID_RECEIPT_TYPE
- INSUFFICIENT_FUNDS
- GAS_LIMIT_TOO_LOW
AI-assisted analysis of FuelLabs/fuels-ts@b3f37c91ac (2026-08-12).
Data as JSON: /api/errors/393f60aadfad3066.
Report an issue: GitHub.