Litecoin payment URI parser tests
Twenty identical requests tested at the parsing boundary of Electrum-LTC 4.2.2.1 and Cake Wallet v6.4.5. Every input, output and software version is available.
Payment URI
In brief Text, often encoded as a QR code, that requests a payment but does not send coins or prove the recipient's identity.
Structured request text, often inside a QR code, containing a destination and optional payment fields. Many Litecoin requests use the litecoin: scheme. Bitcoin's older BIP21 format provides background, but supported addresses, amounts and parameters depend on the actual Litecoin wallet.
For example The placeholder litecoin:ADDRESS?amount=0.1 requests 0.1 LTC; it does not send coins or prove that the named recipient controls the address.
Common mistake Assuming a QR code authenticates a merchant or that every wallet interprets optional fields and expiry information the same way.
Full glossary entryOptional: what would make this clearer?
Choose one reason, or leave without answering.
Address
In brief An encoded payment destination whose network, owner and wallet compatibility still need checking.
An encoded destination for a payment. Common transparent Litecoin addresses begin with L, M or ltc1; MWEB uses a different address format. An address is not a bank account or proof of identity. Check network and wallet compatibility before sending.
For example To receive LTC, copy a Litecoin receiving address from your wallet and check it against the address shown to the sender.
Common mistake A valid-looking address does not prove that it belongs to the intended person or uses the network the sender selected.
Full glossary entryOptional: what would make this clearer?
Choose one reason, or leave without answering.
Bech32
In brief An error-detecting address format for Litecoin's version-0 SegWit addresses, distinct from Bech32m for later versions.
An address encoding with an error-detecting checksum. Litecoin's native witness-version-0 addresses use Bech32 and begin ltc1q on mainnet. Later witness versions use the related Bech32m encoding. A valid checksum does not identify the owner or guarantee wallet support.
For example A wallet can recognize an ltc1q address while an older sending service still refuses that format.
Common mistake Treating every ltc1 address as the same script type or assuming a valid address guarantees that a service will credit the payment.
Full glossary entryOptional: what would make this clearer?
Choose one reason, or leave without answering.
MWEB
In brief Litecoin's optional layer that conceals amounts inside it, while base-chain and boundary activity can still reveal information.
Mimblewimble Extension Blocks, activated on Litecoin in May 2022. MWEB conceals amounts inside the extension layer; the base chain and boundary transfers can reveal information. Use maintained software and review the 2026 security postmortem.
For example An MWEB transfer uses compatible software and a different address format from an ordinary transparent Litecoin transfer.
Common mistake Assuming every LTC wallet or exchange accepts MWEB addresses, or that optional privacy removes all possible information leaks.
Full glossary entryOptional: what would make this clearer?
Choose one reason, or leave without answering.
Litoshi
In brief An informal name for 0.00000001 LTC, the smallest Litecoin unit, with 100,000,000 in one LTC.
An informal name for the smallest Litecoin unit: 0.00000001 LTC. One LTC contains 100,000,000 litoshis. Some software uses the inherited label satoshi, so always check which coin and unit a screen means.
For example 10,000 litoshis equal 0.0001 LTC; 1 litoshi equals 0.00000001 LTC.
Common mistake Confusing a fee quoted per virtual byte with that many litoshis for the whole transaction.
Full glossary entryOptional: what would make this clearer?
Choose one reason, or leave without answering.
Scope: source-isolated functions, not complete wallet applications. No phone camera, wallet GUI, signing or broadcast. A parser returning data does not mean the payment is valid or can be sent. Tests ran on 30 September 2026.
Compare exact results
| Input case | Electrum-LTC · function return | Cake · extracted amount text |
|---|---|---|
| Address only | Returned; no amount | No amount text |
| URI with no amount | Returned; no amount | No amount text |
| Exactly eight decimals | Returned; 12345678 litoshis | 0.12345678 |
| One litoshi | Returned; 1 litoshis | 0.00000001 |
| Nine decimals | Returned; 12345678 litoshis | 0.123456789 |
| Negative amount | Returned; -100000000 litoshis | -1 |
| Decimal comma | Error: failed to parse 'amount' field: InvalidOperation([<class 'decimal.ConversionSyntax'>]) | 0,125 |
| Duplicate amount | Error: Duplicate Key: 'amount' | 2 |
| Empty amount | Returned; no amount | No amount text |
| Unknown optional field | Returned; 12500000 litoshis | 0.125 |
| Unknown required field | Returned; 12500000 litoshis | 0.125 |
| UTF-8 and encoded ampersand | Returned; 12500000 litoshis | 0.125 |
| Unescaped ampersand | Returned; 12500000 litoshis | 0.125 |
| Wrong address checksum | Error: Invalid litecoin address: LLnCCHbSzfwWquEdaS5TF2Yt7uz5Qb1SZ2 | 0.125 |
| Wrong currency scheme | Error: Not a litecoin URI | 0.125 |
| Uppercase scheme | Returned; 12500000 litoshis | 0.125 |
| Native SegWit address | Returned; 12500000 litoshis | 0.125 |
| Scientific notation | Returned; 1 litoshis | 1e-8 |
| Above total supply | Error: failed to parse 'amount' field: InvalidBitcoinURI("amount is out-of-bounds: Decimal('8400000100000000') LTC") | 84000001 |
| Time and expiry metadata | Returned; 12500000 litoshis | 0.125 |
Reproduce the comparison
Electrum’s original URI and address-validation function bodies were executed from the verified release archive. Cake’s unchanged constructor and PaymentRequest.fromUri factory were compiled with Dart 3.13.5; guarded adapters throw on unrelated Lightning/ERC681/Nano branches. All fixtures avoid those paths. The complete apps and downstream address/amount checks were not loaded.
No private keys are known for the synthetic fixture addresses. Never send money to a corpus address. The table establishes a parser result for the pinned source and runtime; it does not establish that any complete wallet pays an invalid destination or negative amount.
Source versions: Electrum-LTC 4.2.2.1; Cake v6.4.5 source function. AI-assisted research, code and drafting; no independent review claimed.