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

# Initiate Consent

> Start the AA + PDF journey and receive a unified transaction_id.

Call this endpoint to start the consent journey. The request is identical to the AA-only flow — the
PDF fallback is handled automatically by the smart router and requires no extra request fields.

```
POST /v3/requestconsent
```

<Info>
  Base URL (UAT / Production): **Contact [support@moneyone.in](mailto:support@moneyone.in)**
</Info>

## Headers

| Header           | Description          |
| ---------------- | -------------------- |
| `Content-Type`   | `application/json`   |
| `client_id`      | Your client ID       |
| `client_secret`  | Your client secret   |
| `organisationId` | Your organisation ID |
| `appIdentifier`  | Your app identifier  |

## Request Body

```json theme={null}
{
  "vua": "<mobile_number>@onemoney",
  "accountID": "<account_id>",
  "productIDList": ["<product_id_1>", "<product_id_2>"],
  "partyIdentifierValue": "<mobile_number>",
  "partyIdentifierType": "MOBILE",
  "redirectUrl": "<your_redirect_url>",
  "fipID": ["<fip_id_1>", "<fip_id_2>"],
  "pan": "<pan_number>"
}
```

## Request Parameters

<ParamField body="vua" type="string" required>
  Virtual User Address (e.g., `9876543210@onemoney`).
</ParamField>

<ParamField body="accountID" type="string" required>
  Unique account identifier.
</ParamField>

<ParamField body="productIDList" type="array" required>
  Array of product IDs for multi-consent. Use either this or `productID`.
</ParamField>

<ParamField body="productID" type="string" required>
  Single product ID. Use either this or `productIDList`.
</ParamField>

<ParamField body="partyIdentifierValue" type="string" required>
  User identifier value (mobile, PAN, Aadhaar, etc.).
</ParamField>

<ParamField body="partyIdentifierType" type="string" required>
  Type: `MOBILE`, `PAN`, `AADHAR`, `EMAIL`, `DOB`, `GSTIN`.
</ParamField>

<ParamField body="redirectUrl" type="string">
  URL the user is returned to after completing the journey.
</ParamField>

<ParamField body="fipID" type="array">
  Array of FIP identifiers to target.
</ParamField>

<ParamField body="pan" type="string">
  User's PAN.
</ParamField>

<ParamField body="transactionID" type="string">
  Optional client-supplied transaction identifier.
</ParamField>

<ParamField body="fitype" type="array">
  Optional list of FI types to request.
</ParamField>

<ParamField body="config" type="object">
  Optional configuration, including the FI data date range.
</ParamField>

### `config` example

```json theme={null}
{ "config": { "fiDataRange": { "from": "2023-01-01T00:00:00.000Z", "to": "2024-01-01T00:00:00.000Z" } } }
```

## Response

```json theme={null}
{
  "ver": "1.21.0",
  "status": "success",
  "data": {
    "webRedirectionUrl": "<web_redirection_url>",
    "transaction_id": "<transaction_id>"
  },
  "message": "Success"
}
```

<Note>
  Store the `transaction_id` — it is the single identifier you use for status polling, raw data fetch,
  and analytics across both AA and PDF. The `webRedirectionUrl` carries a time-bound `access_token`;
  do not modify it.
</Note>

<Note>
  **PDF fallback behaviour:** AA is always attempted first. When AA cannot deliver (e.g. an unhealthy
  FIP, a rejected consent, or no data), the smart router automatically falls back to a **PDF statement
  upload** within the same journey. No additional request fields are needed to enable this — the
  fallback is configured per product. You will see both an AA block and a PDF block in the
  [Track Status](./track-status) responses.
</Note>

## Error Codes

| HTTP Status                 | Condition                                                                                                  |
| --------------------------- | ---------------------------------------------------------------------------------------------------------- |
| `400 Bad Request`           | Required fields are missing or have an invalid format (e.g. missing `vua`, invalid `partyIdentifierType`). |
| `401 Unauthorized`          | Credentials are missing or invalid in the `Authorization` header.                                          |
| `500 Internal Server Error` | An unexpected server-side error occurred.                                                                  |

## Next steps

Continue to [User Redirection](./user-redirection).
