> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.withpersona.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.withpersona.com/_mcp/server.

# Transaction API-first lifecycle

> Use Transaction statuses to track user progress through an API-first flow.

Transaction statuses can be updated at various points in the Transactions lifecycle to track user progression through API-first flow.

To start we suggest the following statuses but as we build out the integration we can add/remove them as necessary. These can be used for tracking/reporting:

| Status      | Event Name                                           | Description                                                                                                                                                                              | Metrics                              |
| ----------- | ---------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------ |
| `created`   | `transaction.created`                                | Initial status. Transaction has been created with information collected and passed to Persona.                                                                                           |                                      |
| `completed` | `transaction.status-updated` with status `completed` | A custom status you can add to your transaction type. `transaction.status-updated` fires whenever the transaction's status is updated, including to a custom status such as `completed`. | Completed Rate = Completed / Created |
| `approved`  | `transaction.status-updated` with status `approved`  | The Transaction has been approved. Will be using `transaction.status-updated` with status `approved`.                                                                                    | Approved Rate = Approved / Created   |
| `declined`  | `transaction.status-updated` with status `declined`  | The Transaction has been declined. Will be using `transaction.status-updated` with status `declined`                                                                                     | Decline Rate = Declined / Created    |