Skip to main content
t2z provides descriptive error messages to help diagnose issues. This guide covers common errors and their solutions.

Error Types

InvalidAddress

Cause: Address couldn’t be parsed or is for the wrong network. Solution:
  • Verify the address is valid (try pasting in a block explorer)
  • Check you’re using the correct network (mainnet vs testnet)
  • Mainnet addresses start with u1, t1, zs1
  • Testnet addresses start with utest1, tm, ztestsapling

InsufficientFunds

Cause: Total input value doesn’t cover payments + fee. Solution:
  • Add more inputs
  • Reduce payment amounts
  • Check you’re calculating amounts in zatoshis (not ZEC)

ChangeRequired

Cause: There’s leftover value but no change address provided. Solution:
  • Provide a change address to propose_transaction
  • Or adjust payment amounts to exactly match inputs minus fee

OrchardBuilderNotAvailable

Cause: Expiry height is before Nu5 activation. Solution:
  • Use an expiry height after Nu5:
    • Mainnet: > 1,687,104
    • Testnet: > 1,842,420
  • Use current block height + 100

Invalid Memo

Cause: Memo must be hex-encoded. Solution:

Failed to Deserialize PCZT

Cause: PCZT data is corrupted or in wrong format. Solution:
  • Ensure hex string is valid
  • Verify the PCZT wasn’t truncated during transmission
  • Check you’re not double-hex-encoding

Missing Signatures

Cause: Tried to finalize before signing all inputs. Solution:

tx-expiring-soon

Cause: Expiry height is too close to current block height. Solution:
  • Use currentBlockHeight + 100 or more
  • Testnet currently around block 3,720,000+

Best Practices

Wrap Operations in Try-Catch

Validate Early

Check PCZT State Before Operations

Debugging Tips

Log PCZT State