---
title: "Create payment consent"
method: POST
path: "/payment_initiation/consent/create"
tags: ["plaid"]
---

# Create payment consent

`POST /payment_initiation/consent/create`

The `/payment_initiation/consent/create` endpoint is used to create a payment consent, which can be used to initiate payments on behalf of the user. Payment consents are created with `UNAUTHORISED` status by default and must be authorised by the user before payments can be initiated.

Consents can be limited in time and scope, and have constraints that describe limitations for payments.

## Request body

- PaymentInitiationConsentCreateRequest — PaymentInitiationConsentCreateRequest defines the request schema for `/payment_initiation/consent/create`
  - `client_id` string — Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header or as part of a request body.
  - `secret` string — Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part of a request body.
  - `recipient_id` string, required — The ID of the recipient the payment consent is for. The created consent can be used to transfer funds to this recipient only.
  - `reference` string, required — A reference for the payment consent. This must be an alphanumeric string with at most 18 characters and must not contain any special characters.
  - `scopes` PaymentInitiationConsentScope[] — An array of payment consent scopes.
  - `type` 'SWEEPING' | 'COMMERCIAL' — Payment consent type. Defines possible use case for payments made with the given consent. `SWEEPING`: Allows moving money between accounts owned by the same user. `COMMERCIAL`: Allows initiating payments from the user's account to third parties.
  - `constraints` PaymentInitiationConsentConstraints, required — Limitations that will be applied to payments initiated using the payment consent.
    - `valid_date_time` PaymentConsentValidDateTime, nullable — Life span for the payment consent. After the `to` date the payment consent expires and can no longer be used for payment initiation.
      - `from` string, date-time, nullable — The date and time from which the consent should be active, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format.
      - `to` string, date-time, nullable — The date and time at which the consent expires, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format.
    - `max_payment_amount` PaymentConsentMaxPaymentAmount, required — The amount and currency of a payment
      - `currency` 'GBP' | 'EUR' | 'PLN' | 'SEK' | 'DKK' | 'NOK', required — The ISO-4217 currency code of the payment. For standing orders and payment consents, `"GBP"` must be used. For Poland, Denmark, Sweden and Norway, only the local currency is currently supported.
      - `value` number, double, required — The amount of the payment. Must contain at most two digits of precision e.g. `1.23`. Minimum accepted value is `1`.
    - `periodic_amounts` PaymentConsentPeriodicAmount[], required — A list of amount limitations per period of time.
      - `amount` PaymentConsentPeriodicAmountAmount, required — The amount and currency of a payment
        - `currency` 'GBP' | 'EUR' | 'PLN' | 'SEK' | 'DKK' | 'NOK', required — The ISO-4217 currency code of the payment. For standing orders and payment consents, `"GBP"` must be used. For Poland, Denmark, Sweden and Norway, only the local currency is currently supported.
        - `value` number, double, required — The amount of the payment. Must contain at most two digits of precision e.g. `1.23`. Minimum accepted value is `1`.
      - `interval` 'DAY' | 'WEEK' | 'MONTH' | 'YEAR', required — Payment consent periodic interval.
      - `alignment` 'CALENDAR' | 'CONSENT', required — Where the payment consent period should start. If the institution is Monzo, only `CONSENT` alignments are supported. `CALENDAR`: line up with a calendar. `CONSENT`: on the date of consent creation.
  - `options` ExternalPaymentInitiationConsentOptions, nullable — (Deprecated) Additional payment consent options. Please use `payer_details` to specify the account.
    - `request_refund_details` boolean, nullable — When `true`, Plaid will attempt to request refund details from the payee's financial institution. Support varies between financial institutions and will not always be available. If refund details could be retrieved, they will be available in the `/payment_initiation/payment/get` response.
    - `iban` string, nullable — The International Bank Account Number (IBAN) for the payer's account. Where possible, the end user will be able to set up payment consent using only the specified bank account if provided.
    - `bacs` PaymentInitiationOptionalRestrictionBacs, nullable — An object containing a Bacs account number and sort code. If an IBAN is not provided or if you need to accept domestic GBP-denominated payments, Bacs data is required.
      - `account` string — The account number of the account. Maximum of 10 characters.
      - `sort_code` string — The 6-character sort code of the account.
  - `payer_details` PaymentInitiationConsentPayerDetails, nullable — An object representing the payment consent payer details. Payer `name` and account `numbers` are required to lock the account to which the consent can be created.
    - `name` string, required — The name of the payer as it appears in their bank account
    - `numbers` PaymentInitiationConsentPayerNumbers, required — The payer's bank account numbers. Exactly one of IBAN or Bacs data is required.
      - `bacs` PaymentInitiationOptionalRestrictionBacs, nullable — An object containing a Bacs account number and sort code. If an IBAN is not provided or if you need to accept domestic GBP-denominated payments, Bacs data is required.
        - `account` string — The account number of the account. Maximum of 10 characters.
        - `sort_code` string — The 6-character sort code of the account.
      - `iban` string — International Bank Account Number (IBAN).
    - `address` PaymentInitiationAddress, nullable — The optional address of the payment recipient's bank account. Required by most institutions outside of the UK.
      - `street` string[], required — An array of length 1-2 representing the street address where the recipient is located. Maximum of 70 characters.
      - `city` string, required — The city where the recipient is located. Maximum of 35 characters.
      - `postal_code` string, required — The postal code where the recipient is located. Maximum of 16 characters.
      - `country` string, required — The ISO 3166-1 alpha-2 country code where the recipient is located.
    - `date_of_birth` string, date, nullable — The payer's birthdate, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) (YYYY-MM-DD) format.
    - `phone_numbers` string[] — The payer's phone numbers in E.164 format: +{countrycode}{number}
    - `emails` string[] — The payer's emails

## Response `200`

OK

- PaymentInitiationConsentCreateResponse — PaymentInitiationConsentCreateResponse defines the response schema for `/payment_initiation/consent/create`
  - `consent_id` string, required — A unique ID identifying the payment consent.
  - `status` 'UNAUTHORISED' | 'AUTHORISED' | 'REVOKED' | 'REJECTED' | 'EXPIRED', required — The status of the payment consent. `UNAUTHORISED`: Consent created, but requires user authorisation. `REJECTED`: Consent authorisation was rejected by the bank. `AUTHORISED`: Consent is active and ready to be used. `REVOKED`: Consent has been revoked and can no longer be used. `EXPIRED`: Consent is no longer valid.
  - `request_id` string, required — A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive.

## Other responses

- `default` — Error response

---

[API](https://skmtc.net/plaid/apis/the-plaid-api.md) · [All operations](https://skmtc.net/plaid/apis/the-plaid-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/plaid/the-plaid-api/versions/64c4514ea59b/schema)
