Citi Mandate API

Mandate API

Operations 3

POST /digitalpayments/v1/payment-acceptance/mandates Initiate New Mandate Outgoing Request #
GET /digitalpayments/v1/payment-acceptance/mandates Get Mandate details #
PATCH /digitalpayments/v1/payment-acceptance/mandates Cancel Mandate Outgoing Request #

Documentation

📖
Documentation
https://developer.citi.com/apidocs/authentication/authentication-only-guide
📖
APIReference
https://developer.citi.com/apidocs/authentication/authentication-api-reference
📖
Authentication
https://raw.githubusercontent.com/api-evangelist/citi/refs/heads/main/authentication/citi-authentication.yml
📖
Documentation
https://developer.citi.com/apidocs/account-reporting/balances/balances-overview
📖
APIReference
https://developer.citi.com/apidocs/account-reporting/balances/balances-api-reference
📖
Documentation
https://developer.citi.com/apidocs/outgoing-payments/payments/payments-overview
📖
APIReference
https://developer.citi.com/apidocs/outgoing-payments/payments/payments-api-reference
📖
Documentation
https://developer.citi.com/apidocs/accept-payments/online-payment-acceptance/online-payment-acceptance-overview
📖
APIReference
https://developer.citi.com/apidocs/accept-payments/online-payment-acceptance/online-payment-acceptance-api-reference
📖
Documentation
https://developer.citi.com/apidocs/commercial-cards/virtual-cards/commercial-cards-overview
📖
APIReference
https://developer.citi.com/apidocs/commercial-cards/virtual-cards/virtual-cards-api-reference
📖
Documentation
https://developer.citi.com/apidocs/fx/gateway/citifx-gateway-overview
📖
APIReference
https://developer.citi.com/apidocs/fx/instant-fx/instant-fx-overview
📖
Documentation
https://developer.citi.com/apidocs/custody/accounts/accounts-overview
📖
APIReference
https://developer.citi.com/apidocs/custody/safekeeping-positions/safekeeping-positions-api-reference
📖
Documentation
https://developer.citi.com/apidocs/transfer-agency/accounts/accounts-overview
📖
APIReference
https://developer.citi.com/apidocs/transfer-agency/accounts/accounts-api-reference
📖
Documentation
https://developer.citi.com/apidocs/open-banking/ukraine-open-banking/ukraine-open-banking-overview
📖
APIReference
https://developer.citi.com/apidocs/open-banking/ukraine-open-banking/ukraine-bank-data-sharing-api-reference
📖
Documentation
https://developer.citi.com/apidocs/trade/standby-letters-of-credit/trade-overview
📖
APIReference
https://developer.citi.com/apidocs/trade/standby-letters-of-credit/trade-api-reference
📖
Documentation
https://developer.citi.com/apidocs/gateway-services/gateway-services-user-guide
📖
APIReference
https://developer.citi.com/apidocs/gateway-services/gateway-services-api-reference
📖
Documentation
https://developer.citi.com/apidocs/additional-payment-services/additional-payment-services/additional-payment-services-overview
📖
APIReference
https://developer.citi.com/apidocs/additional-payment-services/additional-payment-services/additional-payment-services-api-reference

Specifications

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/citi-mandate-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

citi-mandate-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Payment Acceptance Mandate API
  description: 'Payment Acceptance API

    Update - April 28, 2026'
  contact:
    name: Standards & Developer Hub
    url: https://tts.sandbox.developer.citi.com/citiconnect/
    email: developer-support@citi.com
  version: 1.0.0
servers:
- url: https://tts.apib2b.citi.com/citiconnect/prod
  description: production gateway URL
- url: https://tts.sandbox.apib2b.citi.com/citiconnect/sb
  description: sbox URL
- url: https://tts.sit.apib2b.citi.com/citiconnect/uat
  description: uat URL
tags:
- name: Mandate
  description: Mandate API
paths:
  /digitalpayments/v1/payment-acceptance/mandates:
    post:
      tags:
      - Mandate
      summary: Initiate New Mandate Outgoing Request
      description: This endpoint allows the Merchant to initiate the mandate creation process from Clients ERP to Citi’s system in a secure manner.
      operationId: initiateMandate
      parameters:
      - $ref: '#/components/parameters/Client-Id'
      - $ref: '#/components/parameters/Idempotency-Id'
      requestBody:
        description: Mandate Initiation
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Mandate-Initiation-Request'
            examples:
              Brazil-Mandate-Initiation-Request:
                $ref: '#/components/examples/Brazil-Mandate-Initiation-Request-Example'
      security:
      - clientCredentials: []
      callbacks:
        mandate-initiation-status:
          $ref: '#/components/callbacks/Mandate-Initiation-Status'
      responses:
        '202':
          $ref: '#/components/responses/Mandate-Initiation-Request-Accepted'
        '400':
          $ref: '#/components/responses/Bad-Request'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/Not-Found'
        '405':
          $ref: '#/components/responses/Method-Not-Allowed'
        '409':
          $ref: '#/components/responses/Conflict'
        '415':
          $ref: '#/components/responses/Unsupported-Media-Type'
        '429':
          $ref: '#/components/responses/Rate-Limit-Exceeded'
        '500':
          $ref: '#/components/responses/Internal-Server-Error'
        '504':
          $ref: '#/components/responses/Gateway-Timeout'
    get:
      tags:
      - Mandate
      summary: Get Mandate details
      description: Retrieve status of your mandate
      operationId: getMandate
      parameters:
      - $ref: '#/components/parameters/Client-Id'
      - $ref: '#/components/parameters/Mandate-Country-Code'
      - $ref: '#/components/parameters/Mandate-Id'
      security:
      - clientCredentials: []
      responses:
        '200':
          description: Mandate status
          headers:
            apim-guid:
              schema:
                type: string
              description: Citi's unique identification for your request
            result:
              schema:
                type: integer
                minimum: 1
                maximum: 1000
                default: 100
              description: Number of transaction status matching your request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Mandate-Inquiry-Response'
              examples:
                Brazil-Mandate-Get-Status:
                  $ref: '#/components/examples/Brazil-Mandate-Get-Status-Example'
        '400':
          $ref: '#/components/responses/Bad-Request'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/Not-Found'
        '405':
          $ref: '#/components/responses/Method-Not-Allowed'
        '409':
          $ref: '#/components/responses/Conflict'
        '415':
          $ref: '#/components/responses/Unsupported-Media-Type'
        '429':
          $ref: '#/components/responses/Rate-Limit-Exceeded'
        '500':
          $ref: '#/components/responses/Internal-Server-Error'
        '504':
          $ref: '#/components/responses/Gateway-Timeout'
    patch:
      tags:
      - Mandate
      summary: Cancel Mandate Outgoing Request
      description: This endpoint allows the Merchant to cancel an existing mandate from Clients ERP to Citi’s system in a secure manner.
      operationId: cancelMandate
      parameters:
      - $ref: '#/components/parameters/Idempotency-Id'
      - $ref: '#/components/parameters/Client-Id'
      - $ref: '#/components/parameters/Mandate-Patch-Operation'
      requestBody:
        description: Mandate Cancellation Request.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Mandate-Cancellation-Request'
            examples:
              Brazil-Mandate-Cancellation-Request:
                $ref: '#/components/examples/Brazil-Mandate-Cancellation-Request-Example'
      security:
      - clientCredentials: []
      callbacks:
        mandate-cancellation-status:
          $ref: '#/components/callbacks/Mandate-Cancellation-Status'
      responses:
        '202':
          $ref: '#/components/responses/Mandate-Cancellation-Request-Accepted'
        '400':
          $ref: '#/components/responses/Bad-Request'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/Not-Found'
        '405':
          $ref: '#/components/responses/Method-Not-Allowed'
        '409':
          $ref: '#/components/responses/Conflict'
        '415':
          $ref: '#/components/responses/Unsupported-Media-Type'
        '429':
          $ref: '#/components/responses/Rate-Limit-Exceeded'
        '500':
          $ref: '#/components/responses/Internal-Server-Error'
        '504':
          $ref: '#/components/responses/Gateway-Timeout'
components:
  responses:
    Mandate-Cancellation-Request-Accepted:
      description: Accepted
      headers:
        apim-guid:
          $ref: '#/components/headers/Request-Id'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Mandate-Cancellation-Response'
    Gateway-Timeout:
      description: Gateway Timeout
      headers:
        apim-guid:
          $ref: '#/components/headers/Request-Id'
      content:
        application/json:
          schema:
            oneOf:
            - $ref: '#/components/schemas/Gateway-Error-Response'
          examples:
            Gateway-Timeout-Gateway-Error-Example:
              $ref: '#/components/examples/Gateway-Timeout-Gateway-Error-Example'
    Bad-Request:
      description: Bad Request
      headers:
        apim-guid:
          $ref: '#/components/headers/Request-Id'
      content:
        application/json:
          schema:
            oneOf:
            - $ref: '#/components/schemas/Gateway-Error-Response'
            - $ref: '#/components/schemas/Error-Response'
          examples:
            Bad-Request-Service-Error-Example:
              $ref: '#/components/examples/Bad-Request-Example'
            Bad-Request-Gateway-Error-Example:
              $ref: '#/components/examples/Bad-Request-Gateway-Error-Example'
    Mandate-Initiation-Request-Accepted:
      description: Accepted
      headers:
        apim-guid:
          $ref: '#/components/headers/Request-Id'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Mandate-Initiation-Response'
    Unauthorized:
      description: Unauthorized
      headers:
        apim-guid:
          $ref: '#/components/headers/Request-Id'
      content:
        application/json:
          schema:
            oneOf:
            - $ref: '#/components/schemas/Gateway-Error-Response'
            - $ref: '#/components/schemas/Error-Response'
          examples:
            Unauthorized-Service-Error-Example:
              $ref: '#/components/examples/Unauthorized-Example'
            Unauthorized-Gateway-Error-Example:
              $ref: '#/components/examples/Unauthorized-Gateway-Error-Example'
    Not-Found:
      description: Not Found
      headers:
        apim-guid:
          $ref: '#/components/headers/Request-Id'
      content:
        application/json:
          schema:
            oneOf:
            - $ref: '#/components/schemas/Gateway-Error-Response'
            - $ref: '#/components/schemas/Error-Response'
          examples:
            Not-Found-Service-Error-Example:
              $ref: '#/components/examples/Not-Found-Example'
            Not-Found-Gateway-Error-Example:
              $ref: '#/components/examples/Not-Found-Gateway-Error-Example'
    Conflict:
      description: Conflict
      headers:
        apim-guid:
          $ref: '#/components/headers/Request-Id'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error-Response'
          examples:
            Idempotency-Id-Conflict-Example:
              $ref: '#/components/examples/Idempotency-Id-Conflict-Example'
    Method-Not-Allowed:
      description: Method Not Allowed
      headers:
        apim-guid:
          $ref: '#/components/headers/Request-Id'
      content:
        application/json:
          schema:
            oneOf:
            - $ref: '#/components/schemas/Gateway-Error-Response'
            - $ref: '#/components/schemas/Error-Response'
          examples:
            Method-Not-Allowed-Service-Error-Example:
              $ref: '#/components/examples/Method-Not-Allowed-Example'
            Method-Not-Allowed-Gateway-Error-Example:
              $ref: '#/components/examples/Method-Not-Allowed-Gateway-Error-Example'
    Unsupported-Media-Type:
      description: Unsupported Media Type
      headers:
        apim-guid:
          $ref: '#/components/headers/Request-Id'
      content:
        application/json:
          schema:
            oneOf:
            - $ref: '#/components/schemas/Gateway-Error-Response'
            - $ref: '#/components/schemas/Error-Response'
          examples:
            Unsupported-Media-Type-Service-Error-Example:
              $ref: '#/components/examples/Unsupported-Media-Type-Example'
            Unsupported-Media-Type-Gateway-Error-Example:
              $ref: '#/components/examples/Un-Supported-Media-Type-Gateway-Error-Example'
    Internal-Server-Error:
      description: Internal Server Error
      headers:
        apim-guid:
          $ref: '#/components/headers/Request-Id'
      content:
        application/json:
          schema:
            oneOf:
            - $ref: '#/components/schemas/Gateway-Error-Response'
            - $ref: '#/components/schemas/Error-Response'
          examples:
            Internal-Server-Error-Example:
              $ref: '#/components/examples/Internal-Server-Error-Example'
            Internal-Server-Gateway-Error-Example:
              $ref: '#/components/examples/Internal-Server-Gateway-Error-Example'
    Rate-Limit-Exceeded:
      description: Rate Limit Exceeded
      headers:
        apim-guid:
          $ref: '#/components/headers/Request-Id'
      content:
        application/json:
          schema:
            oneOf:
            - $ref: '#/components/schemas/Gateway-Error-Response'
          examples:
            Rate-Limit-Exceeded-Gateway-Error-Example:
              $ref: '#/components/examples/Rate-Limit-Exceeded-Gateway-Error-Example'
  schemas:
    Mandate-Initiation-Response:
      type: object
      title: Mandate Initiation Response
      properties:
        mandate_request_id:
          type: string
          maxLength: 128
          description: Unique Id assigned to identify request made on the mandate
          example: SC3347902320251109REF12345678
          title: mandate_request_id
        status:
          type: string
          maxLength: 10
          description: Request status
          example: CREATED
          title: status
        description:
          type: string
          maxLength: 200
          description: More information about the status
          example: Mandate Request has been received and it is in progress.
          title: description
    Mandate-Initiation-Status-Customer-Notification:
      title: Customer Notification
      type: object
      properties:
        private_id:
          description: "Customer Tax or Legal Entity Id \n- This parameter is optional for Brazil with max length 11 or 14"
          minLength: 1
          maxLength: 35
          type: string
          example: ABC123456789
          title: private_id
        account:
          title: mandate customer account
          description: Account Details
          required:
          - number
          - bank_id
          properties:
            number:
              description: "Customer's bank account number \n- This parameter is optional for Brazil with max length 20"
              minLength: 1
              maxLength: 35
              type: string
              example: ABC123456789
              title: number
            bank_id:
              description: "Customer bank's network identification \n- This parameter is optional for Brazil with max length 8"
              minLength: 1
              maxLength: 35
              type: string
              example: CITIBRSP
              title: number
            branch_id:
              description: "Customer bank's branch id \n- This parameter is optional for Brazil with max length 4"
              minLength: 1
              maxLength: 35
              type: string
              example: BR123
              title: branch_id
        address:
          $ref: '#/components/schemas/Mandate-Address'
    Mandate-Initiation-Status-Mandate-Notification:
      type: object
      title: Mandate Notification
      required:
      - id
      properties:
        id:
          description: "Unique Id assigned to identify the mandate \n- This parameter is mandatory for Brazil with max length 29"
          minLength: 1
          maxLength: 35
          type: string
          example: RR3347902320251109BR345678901
          title: id
        request_id:
          description: "Unique Id assigned to identify request made on the mandate \n- This parameter is mandatory for Brazil with max length 29"
          minLength: 1
          maxLength: 35
          type: string
          example: SC3347902320251109R2345678901
          title: request_id
        frequency:
          description: "Frequency in which payments are to be processed YEAR = Annual, MNTH = Monthly, QURT = Quarterly, MIAN = Semiannual, WEEK = Weekly, DAIL = Daily, ADHO = Ad hoc, INDA = Intraday, FRTN = Fortnightly & OOFF = One Off \n- This parameter is mandatory for Brazil"
          type: string
          enum:
          - YEAR
          - MNTH
          - QURT
          - MIAN
          - WEEK
          - DAIL
          - ADHO
          - INDA
          - FRTN
          - OOFF
          example: MNTH
          title: frequency
        start_date:
          description: "Effective start date for the payment in YYYY-MM-DD format \n- This parameter is mandatory for Brazil"
          type: string
          format: date
          example: '2025-12-07'
          title: start_date
        end_date:
          description: "Effective end date for the payment in YYYY-MM-DD format \n- This parameter is optional for Brazil"
          type: string
          format: date
          example: '2025-12-07'
          title: end_date
        auto_debit:
          description: "Specifies whether the direct debit instructions should be automatically re-submitted periodically \n- This parameter is mandatory for Brazil"
          type: boolean
          example: false
          title: auto-debit
        amount:
          description: "Fixed amount to be collected from the customer's account \n- This parameter is optional for Brazil with 18 digits including 2 decimals"
          minimum: 0.01
          maximum: 1000000000000000000
          type: number
          example: 1000
          title: amount
        max_amount:
          description: "Max amount to be collected from customer's account \n- This parameter is optional for Brazil with 18 digits including 2 decimals"
          minimum: 0.01
          maximum: 1000000000000000000
          type: number
          example: 1000
          title: max_amount
        currency_code:
          type: string
          description: "Currency Code for the mandate \n- This parameter is mandatory for Brazil"
          enum:
          - BRL
          example: BRL
          title: currency_code
        reason_code:
          description: "Reason Code for rejection \n- This parameter is optional for Brazil with max length 4"
          minLength: 1
          maxLength: 35
          type: string
          example: AC01
          title: reason_code
        description:
          description: "Description against the status or/and reason code \n- This parameter is optional For Brazil"
          minLength: 1
          maxLength: 105
          type: string
          example: IncorrectAccountNumber
          title: description
        status:
          description: "Mandate Status \n- This parameter is mandatory for Brazil"
          type: string
          enum:
          - ACTIVE
          - PENDING_AUTHORIZATION
          - REJECTED
          - CANCELLED
          example: ACTIVE
          title: status
        reference_id:
          description: "Reference Id given by merchant such as contract/document number \n- This parameter is mandatory for Brazil with max length 35"
          minLength: 1
          maxLength: 35
          type: string
          example: 84126/12
          title: reference_id
        creation_date_time:
          type: string
          format: date-time
          description: "Date and time at which the message was created in format YYYY-MM-DDTHH:MM:SS.sssZ in UTC time zone \n- This parameter is mandatory for Brazil"
          example: '2022-09-13T08:23:49.114Z'
          title: creation_date_time
        additional_info:
          type: string
          maxLength: 140
          minLength: 1
          description: "Additional Info on the mandate \n- This parameter is optional for Brazil with max length 35"
          title: additional_info
        qr_string:
          type: string
          maxLength: 512
          description: "Dynamic QR Code based on the merchant payload request \n- This parameter is optional for Brazil"
          example: 00020101021226700014br.gov.bcb.pix.citi.com.br/qr/2/8b3da2f39a4140d1a91abd93113bd44 15204000053039865802BR5913Fulano de Tal6008BRASILIA62070503***630464E4
          title: qr_string
    Mandate-Inquiry-Response:
      type: array
      items:
        $ref: '#/components/schemas/Mandate-Response'
    Mandate-Initiation-Request-Customer:
      title: Customer
      type: object
      properties:
        private_id:
          description: "Customer Tax or Legal Entity Id \n- For Brazil this parameter is mandatory only when `mandate.qr_code` = N, individual person tax identification (CPF) allowed length = 11 or business entity tax identification (CNPJ) allowed length = 14"
          minLength: 1
          maxLength: 35
          type: string
          example: ABC123456789
          title: private_id
        account:
          title: customer account
          description: Account Details
          properties:
            number:
              description: "Customer's bank account number \n- For Brazil this parameter is mandatory only when `mandate.qr_code` = N with max length 20"
              minLength: 1
              maxLength: 35
              type: string
              example: '123456789'
              title: number
            bank_id:
              description: "Customer bank's network identification \n- For Brazil this parameter is mandatory only when `mandate.qr_code` = N with max length 8"
              minLength: 1
              maxLength: 35
              type: string
              example: CITIBRSP
              title: bank_id
            branch_id:
              description: "Customer bank's branch id \n- For Brazil this parameter is optional with max length 4 and only numbers are allowed"
              minLength: 1
              maxLength: 35
              type: string
              example: BR123
              title: branch_id
    Mandate-Status-Notification:
      type: object
      title: Mandate Initiation Status Notification
      required:
      - mandate
      properties:
        mandate:
          $ref: '#/components/schemas/Mandate-Initiation-Status-Mandate-Notification'
        customer:
          $ref: '#/components/schemas/Mandate-Initiation-Status-Customer-Notification'
        sender:
          $ref: '#/components/schemas/Mandate-Initiation-Status-Sender-Notification'
        merchant:
          $ref: '#/components/schemas/Mandate-Initiation-Status-Merchant-Notification'
    Mandate-Get-Status:
      type: object
      title: Mandate Notification
      properties:
        id:
          description: "Unique Id given during initiation to identify the mandate \n- This parameter is mandatory for Brazil with max length 29"
          minLength: 1
          maxLength: 35
          type: string
          example: RR3347902320251109REF12345678
          title: id
        request_id:
          description: "Unique Id given during initiation to identify request made on the mandate \n- This parameter is mandatory for Brazil with max lenght 29"
          minLength: 1
          maxLength: 35
          type: string
          example: SC3347902320251109REF12345678
          title: request_id
        status:
          description: "Mandate Current Status \n- This parameter is mandatory for Brazil"
          type: string
          enum:
          - PENDING_AUTHORIZATION
          - PENDING_ACKNOWLEDGEMENT
          - ACTIVE
          - EXPIRED
          - REJECTED
          - SUSPENDED
          - CANCELLED
          example: ACTIVE
          title: status
        country_code:
          description: "Mandate country \n- This parameter is mandatory for Brazil"
          enum:
          - US
          - BR
          - GB
          - IN
          example: US
          type: string
          title: country_code
        frequency:
          description: "Frequency in which payments are to be processed YEAR = Annual, MNTH = Monthly, QURT = Quarterly, MIAN = Semiannual, WEEK = Weekly, DAIL = Daily, ADHO = Ad hoc, INDA = Intraday, FRTN = Fortnightly & OOFF = One Off \n- This parameter is mandatory for Brazil"
          type: string
          enum:
          - YEAR
          - MNTH
          - QURT
          - MIAN
          - WEEK
          - DAIL
          - ADHO
          - INDA
          - FRTN
          - OOFF
          example: MNTH
          title: frequency
        count_per_period:
          description: "Number of instructions to be created and processed during the specified period \n- This parameter is mandatory for Brazil"
          type: number
          minimum: 1
          maximum: 99
          example: 13
          title: count_per_period
        auto_debit:
          description: "Specifies whether the direct debit instructions should be automatically re-submitted periodically \n- This parameter is mandatory for Brazil"
          type: boolean
          example: true
          title: auto_debit
        expiry_date_time:
          description: "Date & Time when the mandate request will get expired (format-YYYYMMDDYhh:mm:ss.000Z where time should be in UTC) \n- This is mandatory parameter for Brazil"
          type: string
          format: date-time
          example: '2024-04-29T23:59:59.999Z'
          title: expiry_date_time
        start_date:
          description: "Effective start date for the payment in YYYY-MM-DD format \n- This parameter is mandatory for Brazil"
          type: string
          format: date
          example: '2025-12-07'
          title: start_date
        end_date:
          description: "Effective end date for the payment in YYYY-MM-DD format \n- This parameter is optional for Brazil"
          type: string
          format: date
          example: '2025-12-07'
          title: end_date
        nature:
          description: "Mandate nature \n- This parameter is mandatory for Brazil"
          type: string
          enum:
          - ELECTRONIC
          - QRC
          - PAPER
          example: PAPER
          title: nature
        reference_id:
          description: "Reference Id given by merchant such as contract/document number \n- This parameter is optional for Brazil with max length 35"
          minLength: 1
          maxLength: 35
          type: string
          example: 84126/12
          title: reference_id
        additional_info:
          maxLength: 140
          minLength: 1
          type: string
          description: "Additional information provided by payor \n- This parameter is mandatory for Brazil with max length 35"
          example: Mandate Initiated
          title: additional_info
        currency_code:
          description: "Currency Code \n- This parameter is mandatory for Brazil"
          enum:
          - BRL
          example: BRL
          type: string
          title: currency_code
        amount:
          description: "Fixed amount to be collected from the customer's account \n- This parameter is optional for Brazil with max length 18 digits including 2 decimals"
          minimum: 0.01
          maximum: 1000000000000000000
          type: number
          example: 1000
          title: amount
        max_amount:
          description: "Max amount to be collected from customer's account \n- This parameter is optional for Brazil with max length 18 digits including 2 decimals"
          minimum: 0.01
          maximum: 1000000000000000000
          type: number
          example: 1000
          title: max_amount
        cancellation_requested_by:
          description: "Party who initiated mandate cancelation \n- This parameter is optional for Brazil with max length 15"
          type: string
          maxLength: 35
          minLength: 1
          example: Canberry Inc
          title: cancellation_requested_by
        reason_code:
          description: "Reason Code for rejection/cancellation \n- This parameter is optional for Brazil with max length 4"
          minLength: 1
          maxLength: 35
          type: string
          example: AC01
          title: reason_code
        description:
          description: "Description against the status or/and reason code \n- This parameter is optional for Brazil with max length 105"
          minLength: 1
          maxLength: 105
          type: string
          example: IncorrectAccountNumber
          title: description
        audit_trail:
          description: "Series of events along with date & time stamp on the mandate \n- This parameter is mandatory for Brazil"
          minLength: 1
          maxLength: 105
          type: string
          example: CRDT2024-04-23T10:00:00.000Z;ACTV2024-04-24T11:30:00.000Z;AMND2024-04-30T11:30:00.000Z
          title: audit_trail
        agreement_number:
          description: "Agreement number between merchant and customer \n- This parameter is optional for Brazil"
          minLength: 1
          maxLength: 60
          type: string
          example: '123456'
          title: agreement_number
        qr_string:
          type: string
          maxLength: 512
          description: "Dynamic QR Code based on the merchant payload request \n- This parameter is optional for Brazil"
          example: 00020101021226700014br.gov.bcb.pix.citi.com.br/qr/2/8b3da2f39a4140d1a91abd93113bd44 15204000053039865802BR5913Fulano de Tal6008BRASILIA62070503***630464E4
          title: qr_string
    Mandate-Response:
      type: object
      title: Mandate Inquiry Notification
      properties:
        mandate:
          $ref: '#/components/schemas/Mandate-Get-Status'
        customer:
          $ref: '#/components/schemas/Customer-Get-Status'
        merchant:
          $ref: '#/components/schemas/Merchant-Get-Status'
        sender:
          $ref: '#/components/schemas/Sender-Get-Status'
    Mandate-Cancellation-Response:
      type: object
      title: Mandate Cancellation Response
      properties:
        mandate_request_id:
          type: string
          maxLength: 128
          description: Unique Id assigned to identify request made on the mandate
          example: IC3347902320251109REF12345678
          title: mandate_request_id
        mandate_id:
          type: string
          maxLength: 128
          description: Unique Id assigned to identify request made on the mandate
          example: RR3347902320251109BRF12345678
          title: mandate_id
        status:
          type: string
          maxLength: 10
          description: Request status
          example: CREATED
          title: status
        description:
          type: string
          maxLength: 200
          description: More information about the status
          example: Mandate Request has been received and it is in progress.
          title: description
    Mandate-Initiation-Request:
      type: object
      title: Mandate Initiation Request
      required:
      - mandate
      - merchant
      properties:
        mandate:
          $ref: '#/components/schemas/Mandate-Initiation-Request-Mandate'
        customer:
          $ref: '#/components/schemas/Mandate-Initiation-Request-Customer'
        sender:
          $ref: '#/components/schemas/Mandate-Initiation-Request-Sender'
        merchant:
          $ref: '#/components/schemas/Mandate-Initiation-Request-Merchant'
    Mandate-Initiation-Request-Mandate:
      title: Mandate
      type: object
      required:
      - request_id
      - auto_debit
      - frequency
      - country_code
      properties:
        request_id:
          description: "Unique ID assigned to identify the request made on the mandate. \n- For Brazil, this parameter is mandatory with a max length of 29 in format 'SC33479023yyyyMMddRkkkkkkkkkk' or 'QR33479023yyyyMMddNkkkkkkkkkk', where:<br> the first two characters will be 'SC' in case of mandate.qr_code is 'N' or <br>the first two characters will be 'QR' in case of mandate.qr_code is 'Y'<br>'33479023' is the merchant bank code<br> 'yyyyMMdd' is the mandate initiation date<br>The next character will be either 'R' or 'N' where: <br>'R' refers to new attempts for the amount collection applicable after original recurrence scheduling date<br>'N' refers to the new attempts for amounts collection NOT applicable after original recurrence scheduling date<br>'kkkkkkkkkk' are unique alphanumeric characters"
          minLength: 1
          maxLength: 35
          type: string
          example: SC3347902320251109REF12345678
          title: request_id
        frequency:
          description: "Frequency in which payments are to be processed YEAR = Annual, MNTH = Monthly, QURT = Quarterly, MIAN = Semiannual, WEEK = Weekly, DAIL = Daily, ADHO = Ad hoc, INDA = Intraday, FRTN = Fortnightly and OOFF = One Off \n- For Brazil this parameter is mandatory and with the allowed values: MIAN, MNTH, QURT, WEEK, and YEAR"
          type: string
          enum:
          - YEAR
          - MNTH
          - QURT
          - MIAN
          - WEEK
          - DAIL
          - ADHO
          - INDA
          - FRTN
          - OOFF
          example: MNTH
          title: frequency
        start_date:
          description: "Effective start date for the payment in YYYY-MM-DD format \n- For Brazil this parameter is mandatory where the date should be greater than mandate creation date"
          type: string
          format: date
          example: '2025-12-07'
          title: start_date
        end_date:
          description: "Effective end date for the payment in YYYY-MM-DD format \n- For Brazil this parameter is optional where date should be greater than mandate start date"
          type: string
          format: date
          example: '2025-12-07'
          title: end_date
        auto_debit:
          description: "Specifies whether the direct debit instructions should be automatically re-submitted periodically by indicating value either 'true' or 'false' \n- For Brazil this parameter is mandatory with an allowed value of false"
          type: boolean
          example: false
          title: auto_debit
        amount:
          description: "Fixed amount to be collected from the customer's account (either of amount or max_amount is allowed) \n- For Brazil this is optional parameter with maxlength 18 digits and 2 decimals"
          minimum: 0.01
          maximum: 10000000000

# --- truncated at 32 KB (57 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/citi/refs/heads/main/openapi/citi-mandate-api-openapi.yml