Just for clarity, regardless of the broadcast setting Twitch will ALWAYS send a receipt to onTransactionComplete for ALL connections by a user on the channel where they have used bits.
Personally I just use a basket flow, sort of, and have had no issue with it. If the user has something selected and has clicked useBits (regardless of if they actually use confirm that within that tab) they’ll send any transaction they get back to my EBS, first one there is considered the definitive source of data for me. If a tab got a receipt but a nothing selected, or they never attempted to call useBits then the frontend for that tab just assumes it wasn’t a transaction for their tab.
Another alternative is to use ‘tokens’. For example if a sku is to get ‘gold tokens’, then the EBS can credit those ‘tokens’ to the users account and this can completely ignore any duplicate transactions as no meta-data or state needs to be sent from the user to your EBS. Then the user can use those ‘tokens’ in your extension to do whatever it is they need to do, and there’s no issue with duplication there as it’s directly between a client and your EBS.