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

# Initiate Tier Escalation

> Starts a tier upgrade (escalation) for one of your users. Kravata looks at the user's current tier in the currency and returns the action the user has to complete to move to the next tier, for example uploading documents.

If the user already has a pending escalation for the same action, the same request is returned; calling it again does not create another one. The user completes the action in the Kravata widget; when it is approved, the new tier shows up in **GET /api/v1/tier/user-assignments**.

#### Request

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| Authorization | Header | Yes | `Bearer <access_token>` obtained from **POST /api/v1/client/token**. |
| user_id | Path | Yes | Identifier of the user. |
| currency | Body | No | `USD` or `COP`. Default `USD`. The body can be omitted. |

#### Response

| Field | Description |
| --- | --- |
| requestId | Identifier of the escalation request. |
| actionType | What the user has to do: `FORM_URL`, `QR_APP`, `VIDEO_KYC`, `DOC_UPLOAD` or `NOTIFY_ONLY`. |
| actionPayload | Data for the action (for example a URL or a form identifier), or `null`. |
| message | Message for the user, with the limits of their current tier. |
| expiresAt | When the request expires (UTC). After that, call this endpoint again. |
| fromTierId | Current tier of the user. |
| toTierId | Tier the user moves to when the action is approved. |

#### Errors

| Status | When |
| --- | --- |
| 404 | The user does not exist, has no tier in that currency, or their tier has no upgrade configured. |
| 422 | `user_id` is not a valid UUID. |



## OpenAPI

````yaml /stack/openapi.json post /api/v1/admin/tier/escalation-requests/{user_id}
openapi: 3.1.0
info:
  title: Kravata Stack API
  version: '2.0'
  description: >-
    Kravata Stack API: users, accounts, custody wallets, liquidity ramps and
    fiat payments.
servers:
  - url: https://test-api-kore.kravata.co
    description: Test
  - url: https://partners-api.kravata.co
    description: Production (mTLS + IP allowlist)
security:
  - bearerAuth: []
tags:
  - name: Authentication
  - name: Users
  - name: Accounts
  - name: Earn
  - name: Custody
  - name: Liquidity Ramps
  - name: Payments
  - name: Webhooks
  - name: Request Logs
  - name: WhatsApp Channel
    description: >-
      Endpoints for a company's own WhatsApp bot acting for one end user at a
      time. See the WhatsApp channel guide.
paths:
  /api/v1/admin/tier/escalation-requests/{user_id}:
    post:
      tags:
        - Users
      summary: Initiate Tier Escalation
      description: >-
        Starts a tier upgrade (escalation) for one of your users. Kravata looks
        at the user's current tier in the currency and returns the action the
        user has to complete to move to the next tier, for example uploading
        documents.


        If the user already has a pending escalation for the same action, the
        same request is returned; calling it again does not create another one.
        The user completes the action in the Kravata widget; when it is
        approved, the new tier shows up in **GET
        /api/v1/tier/user-assignments**.


        #### Request


        | Field | Type | Required | Description |

        | --- | --- | --- | --- |

        | Authorization | Header | Yes | `Bearer <access_token>` obtained from
        **POST /api/v1/client/token**. |

        | user_id | Path | Yes | Identifier of the user. |

        | currency | Body | No | `USD` or `COP`. Default `USD`. The body can be
        omitted. |


        #### Response


        | Field | Description |

        | --- | --- |

        | requestId | Identifier of the escalation request. |

        | actionType | What the user has to do: `FORM_URL`, `QR_APP`,
        `VIDEO_KYC`, `DOC_UPLOAD` or `NOTIFY_ONLY`. |

        | actionPayload | Data for the action (for example a URL or a form
        identifier), or `null`. |

        | message | Message for the user, with the limits of their current tier.
        |

        | expiresAt | When the request expires (UTC). After that, call this
        endpoint again. |

        | fromTierId | Current tier of the user. |

        | toTierId | Tier the user moves to when the action is approved. |


        #### Errors


        | Status | When |

        | --- | --- |

        | 404 | The user does not exist, has no tier in that currency, or their
        tier has no upgrade configured. |

        | 422 | `user_id` is not a valid UUID. |
      operationId: initiate-tier-escalation
      parameters:
        - name: user_id
          in: path
          required: true
          description: Identifier of the user.
          schema:
            type: string
            format: uuid
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                currency:
                  type: string
                  enum:
                    - USD
                    - COP
                  default: USD
            examples:
              initiate-tier-escalation:
                summary: Initiate Tier Escalation
                value:
                  currency: USD
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  requestId:
                    type: string
                    format: uuid
                  actionType:
                    type: string
                    enum:
                      - FORM_URL
                      - QR_APP
                      - VIDEO_KYC
                      - DOC_UPLOAD
                      - NOTIFY_ONLY
                  actionPayload:
                    type:
                      - string
                      - 'null'
                  message:
                    type:
                      - string
                      - 'null'
                  expiresAt:
                    type: string
                  fromTierId:
                    type: string
                    format: uuid
                  toTierId:
                    type: string
                    format: uuid
              examples:
                initiate-tier-escalation:
                  summary: Initiate Tier Escalation
                  value:
                    requestId: c8967e40-8afb-4c3f-8d1c-153261768104
                    actionType: DOC_UPLOAD
                    actionPayload: <action payload>
                    message: >-
                      Your current tier lets you deposit up to 1,000 USD per
                      transaction and 4,000 USD per month. To increase it,
                      upload your documents.
                    expiresAt: '2026-10-24T20:16:44'
                    fromTierId: d2871503-1fb1-47ce-8a3f-3522b2e246c0
                    toTierId: 28d532c0-cab2-4dfd-bd1e-1c82a942a050
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Access token from POST /api/v1/client/token.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.