Skip to main content

Why Verify Events?

On StarkNet, a transaction can have status “SUCCEEDED” while the token transfer inside it fails silently. This happens because:
  1. The Chipi paymaster wraps your calls in execute_from_outside_v2
  2. The forwarder contract executes the wrapped call
  3. If the inner call fails (e.g., insufficient balance), the forwarder may still succeed
  4. The transaction is marked “SUCCEEDED” on explorers
Always verify Transfer events to confirm tokens actually moved.

Checking Transfer Events via RPC

After a transfer, query the transaction receipt for Transfer events from the token contract:

Checking Balance Before and After

For additional certainty, query the token balance before and after the transfer:

Using getTransactionStatus for Polling

The SDK’s getTransactionStatus method polls the chain for finality, but it only checks transaction inclusion — not whether the inner transfer succeeded:
Use getTransactionStatus for finality, then verify Transfer events for correctness.

Common Pitfalls