---
title: "Submit consent"
method: POST
path: "/v3/mandates/{id}/authorization-flow/actions/consent"
tags: ["Mandates"]
---

# Submit consent

`POST /v3/mandates/{id}/authorization-flow/actions/consent`

## Request

- Base URL: `https://api.truelayer-sandbox.com`
- URL: `https://api.truelayer-sandbox.com/v3/mandates/{id}/authorization-flow/actions/consent`
- Auth: one of:
  - OAuth 2
    - Client credentials
    - Token URL: `https://auth.truelayer.com/connect/token` scopes: `mandates`
  - HTTP bearer

Submit the consent given by the user

This API can be called:
- using the `mandate_token` associated with the mandate you are trying to authorize;
- using a backend bearer token.

## Path parameters

- `id` string, required: Unique ID for the mandate

## Headers

- `Idempotency-Key` string
- `Tl-Signature` string

## Request body

- SubmitConsent: Indicate consent was captured
  - `captured` ConsentCaptured: The details of the consents captured from the user. If omitted it is assumed a standard PIS consent was captured.
    - `pis` ConsentCapturedPis, required
    - `ais` ConsentCapturedAis
      - `scopes` AisScope[], required

## Response `200`

Mandate Provider Selection Action

- union
  - MandateAuthorizationFlowAuthorizing
    - `status` 'authorizing', required
    - `authorization_flow` MandateAuthorizationFlow, required: Contains information regarding the nature and the state of the authorization flow
      - `actions` object, required
        - `next` union, required: The next action can be performed via `POST /v3/mandate/{id}/authorization_flow/action/{action_name}` - check its documentation for relevant examples.
          - ActionSpecProviderSelection: Provider selection represents the end user action of selecting a provider
            - `type` 'provider_selection', required
            - `providers` Provider[], required: List of providers to be presented to the end user
              - …
          - ActionSpecRedirect
            - `type` 'redirect', required
            - `uri` string, url, required: URL the end user must be redirected to.
          - ActionSpecWaitForOutcome2: Indication that there are currently no actions to perform.
            - `type` 'wait', required
            - `display_message` DisplayText
              - …
            - `async_outcome` object: It indicates that the user flow can continue and you can check the mandate status later. You don't need to wait synchronously for the status to change at this point.
          - ActionSpecConsent2
            - `type` 'consent', required
            - `subsequent_action_hint` 'redirect', required
  - MandateAuthorizationFlowAuthorizationFailed
    - `status` 'failed', required
    - `failure_stage` 'authorization_required' | 'authorizing' | 'authorized', required: The status the mandate was in when it failed.
    - `failure_reason` string, required: A readable detail for why the mandate failed. Example values to expect: - `authorization_failed` - `provider_error` - `provider_rejected` - `internal_server_error` - `invalid_sort_code` - `invalid_request` - `expired` - `unknown_error`

## Other responses

- `400`: Invalid Request
- `401`: Unauthenticated
- `403`: Forbidden
- `404`: Mandate Not Found
- `409`: Conflict
- `422`: Idempotency-Key Reuse
- `500`: Unknown Error
- `502`: Provider Error

---

[API](https://skmtc.dev/truelayer/apis/payments-api-v3.md) - [All operations](https://skmtc.dev/truelayer/apis/payments-api-v3/llms.txt) - [OpenAPI document](https://skmtc.dev/truelayer/apis/payments-api-v3/revisions/a7c585fc9b84?raw)
