Skip to content

Events

Subscribe to Cash App order lifecycle signals.

When to use

Navigate to success, show failed or expired UI. For the current order you can also read getActiveOrder().

Methods

MethodEventWhen
onOrderCompletedcashApp:orderCompletedPayment succeeded ({ sessionId, order })
onOrderFailedcashApp:orderFailedPayment failed ({ sessionId, order, payload })
onOrderExpiredcashApp:orderExpiredLocal timer hit expiresAt ({ sessionId, order })
onOrderResetcashApp:orderResetLocal order cleared via reset() ({ sessionId, order })
onDepositStatuscashApp:depositStatusOptional raw status (pending / success / failure)

Each returns an unsubscribe function. You can also use client.on('cashApp:…') — see Events (Core).

Order events include sessionId and are delivered only for the live session. A createOrder still in flight when restartSession() completes is discarded (SESSION_REPLACED) and does not emit on the new session.

Prefer onOrderCompleted / onOrderFailed / onOrderExpired / onOrderReset for UI. Use onDepositStatus only when you need the raw status payload.

Example

ts
const offs = [
  client.cashApp.onOrderCompleted(({ order }) => {
    // success screen — then getCompletedTransactionSummary()
    console.log('paid', order.id);
  }),
  client.cashApp.onOrderFailed(({ order }) => {
    // failed UI — create a new order or go back
    console.log('failed', order.id);
  }),
  client.cashApp.onOrderExpired(({ order }) => {
    // expired UI — create a new order or go back
    console.log('expired', order.id);
  }),
  client.cashApp.onOrderReset(({ order }) => {
    // local clear — `order` is the previous active order, or `null`
    console.log('reset', order?.id);
  }),
];

// later
offs.forEach(off => off());