The transaction itself is only the beginning. The real backend complexity starts when your system needs to decide what happens next.

Your backend may see funds before they are final. The customer may close the tab. Support may get a message saying “I paid,” while finance still needs a clean record. Product access might depend on a status that is not simply paid or not paid.

This guide focuses on one backend problem: modeling payment states after an invoice is created. Whether you use a crypto payment gateway or build the integration yourself, the same backend question appears: which state is safe to trust?

It is not a repeat of “why a wallet address is not enough.” It is the next question developers usually face: once an invoice exists, how should your system treat every step between created and confirmed?

Why status design matters