> This page is for version v2024-05-25 (default).
> For other versions, use one of these documentation indexes:
> - v2024-05-25 (default): https://docs.monite.com/v-2024-05-25/llms.txt
> - v2024-01-31: https://docs.monite.com/v2024-01-31/llms.txt
> - v2023-09-01: https://docs.monite.com/v2023-09-01/llms.txt

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

# Processes and steps

## Overview

Whenever a new [approval policy](../../approvals/policies/index) is created, or a payable is created or updated, Monite checks if there is a match between the approval policy and the payable.

If a payable matches some approval policies' trigger conditions, a new instance of the approval policy is created. This instance of approval policy applied to a payable is called a **process**.

Every process has [approval steps](#steps), which are lists of all approval requests that will be created for a given process.

## List all processes

To list all processes applied to a specific approval policy, call `GET /approval_policies/{approval_policy_id}/processes`:

```sh
curl -X GET 'https://api.sandbox.monite.com/v1/approval_policies/{approval_policy_id}/processes' \
     -H 'X-Monite-Version: 2024-05-25' \
     -H 'X-Monite-Entity-Id: ENTITY_ID' \
     -H 'Authorization: Bearer ACCESS_TOKEN' \
     -H 'accept: application/json' \
```

The successful response contains all the processes related to the provided approval policy:

```json
{
  "data": [
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "status": "succeeded",
      "input": {},
      "error": {},
      "script_snapshot": true,
      "metadata": {},
      "created_at": "2023-04-05T19:09:35.111Z",
      "updated_at": "2023-04-05T19:09:35.111Z",
      "created_by": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "updated_by": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
    }
  ]
}
```

> **Info**
>
> You can also check which approval policy applies to which payable in the responses from `GET /payables` and `GET /payables/{payable_id}`. The approval policy ID is stored in the `approval_policy_id` field of the [Payable object](../../payables/collect).

### Steps

Approval steps, or just steps, contain the current state of all approval requests created for a given approval process and sent to the users. To check all the steps of a specific process, call `GET /approval_policies/{approval_policy_id}/processes/{process_id}/steps`:

```sh
curl -X GET 'https://api.sandbox.monite.com/v1/approval_policies/{approval_policy_id}/processes/{process_id}/steps' \
     -H 'X-Monite-Version: 2024-05-25' \
     -H 'X-Monite-Entity-Id: ENTITY_ID' \
     -H 'Authorization: Bearer ACCESS_TOKEN' \
     -H 'accept: application/json' \
```

The successful response contains the current status of all the steps required for a given approval policy:

```json
{
  "data": [
    {
      "object_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "required_approval_count": 1,
      "status": "approved",
      "user_ids": ["3fa85f64-5717-4562-b3fc-2c963f66afa6"],
      "approved_by": ["3fa85f64-5717-4562-b3fc-2c963f66afa6"],
      "rejected_by": null
    }
  ]
}
```

## Retrieve a process

To get information about a specific process, call `GET /approval_policies/{approval_policy_id}/processes/{process_id}`.

## Cancel a process

To cancel a specific process, call `POST /approval_policies/{approval_policy_id}/processes/{process_id}/cancel`.