> ## Documentation Index
> Fetch the complete documentation index at: https://docs.arc.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Borrow phase events

> Phase names, semantics, and firing rules for Borrow loan operations

Loan operations dispatch phase events as they progress. Handlers registered
through `kit.on` receive a payload with the phase `state`, so you can drive a
progress UI or diagnose where an operation stopped.

## Phases

Every loan operation dispatches events under the same set of phase names:

| Phase | What happens | Fires for |
| - | - | - |
| `fetchParams` | The SDK call that returns the signed execution. | Every operation, except retries with a live signed execution |
| `approve` | The token approval to the adapter (collateral for `borrow`/`addCollateral`, USDC for `repay`/`closeLoan`/`withdrawCollateralRepayIfNeeded`). | Any operation that needs an allowance the wallet doesn't already have |
| `setAuthorization` | The lending protocol manager grant and its matching revocation. | `borrow`, `closeLoan`, `withdrawCollateralRepayIfNeeded` |
| `execute` | The atomic batch that submits the operation onchain. | Every operation |

## Transaction hashes by phase

Not every phase reports a `txHash`:

* `execute`: reports the batch's `txHash` on `success`.
* `approve` and `setAuthorization`: carry a `txHash` only when they submit their
  own transaction. If existing allowance or authorization already covers the
  pull, they reach `success` immediately with no hash.
* `fetchParams`: never has a `txHash`.

A phase that stops at `pending` was prepared into a batch whose outcome the
wallet never reported. Treat it as unknown and read the loan before you retry.

For subscribing to phase events with `kit.on`, see
[Track operation progress](/app-kit/howtos/borrow/track-operation-progress).
