Finicity Third Party Access API

Generate and manage access keys for other partners

Operations 3

POST /aggregation/v1/partners/accessKey Generate Third Party Access Key #
PUT /aggregation/v1/partners/accessKey/{consentReceiptId} Update Third Party Access #
DELETE /aggregation/v1/partners/accessKey/{consentReceiptId} Revoke Third Party Access #

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/finicity-third-party-access-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

finicity-third-party-access-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Open Finance Third Party Access API
  description: 'OpenAPI specification for Finicity APIs.


    Open Finance (formerly Open Banking) solutions in the US are provided by

    Finicity, a Mastercard company.'
  contact:
    name: API Support
    email: apisupport@mastercard.com
    url: https://developer.mastercard.com/open-finance-us/documentation/support/
  version: 1.43.0
servers:
- url: https://api.finicity.com
  description: Production
security:
- FinicityAppKey: []
  FinicityAppToken: []
tags:
- name: Third Party Access
  description: Generate and manage access keys for other partners
paths:
  /aggregation/v1/partners/accessKey:
    post:
      tags:
      - Third Party Access
      summary: Generate Third Party Access Key
      description: 'Generate access key for third party partners.

        A partner can provide access to third party partners with this access key.'
      operationId: GenerateThirdPartyAccessKey
      requestBody:
        $ref: '#/components/requestBodies/GenerateThirdPartyAccessKeyRequest'
      responses:
        '200':
          $ref: '#/components/responses/GenerateThirdPartyAccessKeyResponse'
        '400':
          $ref: '#/components/responses/BadRequestErrorResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedErrorResponse'
        '404':
          $ref: '#/components/responses/ResourceNotFoundErrorResponse'
  /aggregation/v1/partners/accessKey/{consentReceiptId}:
    put:
      tags:
      - Third Party Access
      summary: Update Third Party Access
      description: Update access for third party partners
      operationId: UpdateThirdPartyAccessKey
      parameters:
      - $ref: '#/components/parameters/ConsentReceiptIdParameter'
      requestBody:
        $ref: '#/components/requestBodies/UpdateThirdPartyAccessKeyRequest'
      responses:
        '200':
          $ref: '#/components/responses/UpdateThirdPartyAccessKeyResponse'
        '400':
          $ref: '#/components/responses/BadRequestErrorResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedErrorResponse'
        '404':
          $ref: '#/components/responses/ResourceNotFoundErrorResponse'
    delete:
      tags:
      - Third Party Access
      summary: Revoke Third Party Access
      description: Revoke access of third party partners
      operationId: RevokeThirdPartyAccessKey
      parameters:
      - $ref: '#/components/parameters/ConsentReceiptIdParameter'
      responses:
        '204':
          $ref: '#/components/responses/RevokeThirdPartyAccessKeyResponse'
        '400':
          $ref: '#/components/responses/BadRequestErrorResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedErrorResponse'
        '404':
          $ref: '#/components/responses/ResourceNotFoundErrorResponse'
components:
  examples:
    MissingFinicityAppKeyExample:
      value:
        code: '10026'
        message: Missing parameter (Finicity-App-Key)
    InvalidForesightReportRequestExample:
      value:
        code: '10100'
        message: At least one of customerId or externalCustomerId must be provided; both are also allowed.
    ResellerInvalidDateRangeGreaterThan31DaysExample:
      value:
        code: '10100'
        message: 'RESELLER_BILLING_REPORT: Invalid date range - It is more than 31 days'
    ResellerNoReportForPartnerExample:
      value:
        code: '10100'
        message: Cannot find resellerBilling reports with id 2445581559892.
    ResellerInvalidDateRangeGreaterThanEndDateExample:
      value:
        code: '10100'
        message: 'RESELLER_BILLING_REPORT: Invalid date range - startDate is greaterThan endDate'
    BothCraAndFtcPurposeTrueExample:
      value:
        code: '10100'
        status: '400'
        message: forCRAPurpose and forFTCPurpose may not both be TRUE.
    ResellerPartnerNotAuthorizedExample:
      value:
        code: '10100'
        message: 'RESELLER_BILLING_REPORT: Partner is not authorized to access resellerBilling reports for partnerId 2445583947903'
    InvalidConsumerPhoneExample:
      value:
        code: '10100'
        message: Invalid format for field consumer.phone.
    MissingFieldExample:
      value:
        code: '10005'
        message: Missing parameter (partnerId)
    NoRegisteredApplicationExample:
      value:
        code: '50051'
        message: No registered partner applications found.
    ExpiredFinicityAppTokenExample:
      value:
        code: '10023'
        message: Expired (Finicity-App-Token)
    InvalidFieldExample:
      value:
        code: '10010'
        status: '400'
        message: Customer ID does not exist or does not belong to this partner
        user_message: One or more of the fields could not be validated. Please ensure you have entered the correct data.
        tags: ''
    InvalidValueExample:
      value:
        code: '1618'
        message: Negative or invalid value entered. Please use positive numbers only.
    InvalidConsumerSSNExample:
      value:
        code: '10100'
        message: Invalid format for field consumer.ssn.  Required format is 9 digits.
    InvalidFinicityAppTokenExample:
      value:
        code: '10022'
        message: Invalid (Finicity-App-Token)
    ResellerInvalidDateRangeLessThanZeroExample:
      value:
        code: '10100'
        message: 'RESELLER_BILLING_REPORT: Invalid date range - start or end date less than or equal to zero'
    CustomerReportLimitExceedExample:
      value:
        code: '20400'
        message: The max report generation limit was exceeded for this customer.
    NoAccountForInstitutionLoginIdExample:
      value:
        code: '38007'
        message: Customer does not have any accounts associated with institutionLoginId.
    CustomerNotFoundExample:
      value:
        code: '14001'
        message: Customer not found.
    ResellerNoDataForPartnerExample:
      value:
        code: '10100'
        message: 'RESELLER_BILLING_REPORT: Reports not found 2445583947903 resellerBilling reports'
    InvalidConsumerEmailExample:
      value:
        code: '10100'
        message: Invalid format for field consumer.email.
    ResellerInvalidDateRangeExample:
      value:
        code: '10100'
        message: 'RESELLER_BILLING_REPORT: Invalid date range - start or end date is empty or null'
    ExpiredTokenExample:
      value:
        code: '10023'
        message: Expired (Finicity-App-Token)
    AccountTypeNotSupportedExample:
      value:
        code: '14020'
        message: Bad request. (Account type not supported).
    PermissiblePurposeCodeExample:
      value:
        code: '10100'
        status: '400'
        message: Permissible Purpose Code is required
    ResourceNotFoundExample:
      value:
        code: '14001'
        message: Resource not found.
    ConsumerNotFoundExample:
      value:
        code: '10100'
        message: Cannot find consumer with id 1234.
    InvalidExperienceFieldExample:
      value:
        code: '10010'
        status: '400'
        message: '"experience" must be a valid GUID'
        user_message: One or more of the fields could not be validated. Please ensure you have entered the correct data.
        tags: ''
    GenericBadRequestExample:
      value:
        code: '14020'
        message: Bad request.
    BadCredentialsExample:
      value:
        code: '24302'
        message: Bad credentials
    NoConsumerForCustomerExample:
      value:
        code: '10100'
        message: Cannot find consumer for customer with id 5011115315."
    MissingFinicityAppTokenExample:
      value:
        code: '10024'
        message: Missing parameter (Finicity-App-Token)
  schemas:
    ThirdPartyAccessProvenance:
      description: Provenance regarding the calling client like `clientFingerprint`, `ipAddress` and `token`.
      type: object
      properties:
        clientFingerprint:
          type: string
          description: Calling client identifier
          example: LU9ZYxcDNQCwEmAxH52XFzaRiGMAAAAABclSKxW5S9P8pUMDV4fbpg
        ipAddress:
          type: string
          description: Calling client IP address
          example: 8.8.8.8
        token:
          type: string
          description: Calling client cookie
          example: P9YbR+srNVyQI35893d+BzPrhGMAAAAAuacVUt+3m4svbaFjVSbHEA==
    ErrorMessage:
      required:
      - code
      type: object
      properties:
        code:
          type: object
          description: 'An error code (can be returned as a number or a string). Useful links: [Common API Status Codes](https://developer.mastercard.com/open-finance-us/documentation/errors/best-practices/#common-api-status-codes), [Aggregation Status Codes](https://developer.mastercard.com/open-finance-us/documentation/products/manage/account-aggregation/#aggregation-status-codes).'
          example: '10001'
        status:
          type: string
          description: A status code
          example: '401'
        title:
          type: string
          description: A title for the error
          example: Connecting accounts error
        level:
          type: string
          description: An error level
          example: error
        message:
          type: string
          description: An error message
          example: Invalid authorization credentials
        user_message:
          type: string
          description: Some more details about the error
          example: The session has expired or is invalid
        assetId:
          $ref: '#/components/schemas/AssetId'
        accountId:
          $ref: '#/components/schemas/AccountId'
        externalTransactionId:
          type: string
          description: A unique identifier for the transaction that assists in linking data back to your systems.
          example: MAC1005061234
          minLength: 1
          maxLength: 100
        tags:
          type: string
          description: Categories that the error belongs to
          example: AGG
    ThirdPartyAccessKeyReceiptData:
      description: "An object representing the third party access key receipt\n\n  * `customerId`: This is recipient's customerId represented as a\n  pseudo identifier.\n  * `accountId`: This is the value provided to recipient\n  represented as a pseudo identifier for the accountId."
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/ThirdPartyAccessReceiptData'
    AccountId:
      type: string
      description: An account ID
      example: '5011648377'
    ThirdPartyAccessPeriod:
      type: object
      description: Object which describes access validity
      required:
      - type
      - startTime
      - endTime
      properties:
        type:
          $ref: '#/components/schemas/ThirdPartyAccessPeriodTypes'
        startTime:
          $ref: '#/components/schemas/DateTimeWithZone'
        endTime:
          $ref: '#/components/schemas/DateTimeWithZone'
    ThirdPartyAccessPeriodTypes:
      description: "Multiple types will be supported. Presently below types are supported.\n* \"timeframe\": Specifies a timeframe bounded by a startTime and endTime.\n  The startTime is the time at which the access was granted and the\naccess key generated,\n  and the endTime is the time at which the access was revoked. Times\nare represented in ISO 8601 format(\"2022-03-10T06:06:20Z\")"
      type: string
      example: timeframe
    ThirdPartyAccessProductTypes:
      description: "Third party access token can be generated for the following product types:\n\n\n* \"moneyTransferDetails\": Retrieve account details for money transfer\n* \"availableBalance\": Retrieves the latest cached available and cleared\n    account balances for an account.\n* \"availableBalanceLive\": Retrieves the available and cleared account\nbalances live from the financial institution\n* \"accountOwner\": Retrieves names and addresses of the account owner\nfrom a financial institution.\n* \"paymentIndicator\": Get the Payment Success Indicator response,\nscoring the likelihood of payment settlement"
      type: string
      example: moneyTransferDetails
    ThirdPartyAccessProof:
      type: object
      description: An object representing a digital signature of the access key
      properties:
        signature:
          type: string
          description: The digital signature for the "receipt" portion of the access key
          example: JTdCyTIyY3VzdG9tZXJJZCUyMiUzQSUyMjU0NTQ1MTQwMDI5NTU2MjkzNDMlMjIlMkMlMjJwYXJ0bmVySWQlMjIlM0ElMjIyNDQ1NTgzOTIyNTM2JTIyJTJDJTIycHJvZHVjdHMlMjIlM0ElNUIlN0IlMjJhY2Nlc3NQZXJpb2QlMjIlM0ElN0IlMjJlbmRUaW1lJTIyJTNBJTIyMjAyMy0xMS0yOVQwNiUzQTA2JTNBMjBaJTIyJTJDJTIyc3RhcnRUaW1lJTIyJTNBJTIyMjAyMi0xMS0yOVQwNiUzQTA2JTNBMjBaJTIyJTJDJTIydHlwZSUyMiUzQSUyMnRpbWVmcmFtZSUyMiU3RCUyQyUyMmFjY291bnRJZCUyMiUzQSUyMjQ2MzM0MTU3NDM5NjAzNzQwMjQlMjIlMkMlMjJwcm9kdWN0JTIyJTNBJTIybW9uZXlUcmFuc2ZlckRldGFpbHMlMjIlN0QlMkMlN0IlMjJhY2Nlc3NQZXJpb2QlMjIlM0ElN0IlMjJlbmRUaW1lJTIyJTNBJTIyMjAyMy0xMC0yOVQwNiUzQTA2JTNBMjBaJTIyJTJDJTIyc3RhcnRUaW1lJTIyJTNBJTIyMjAyMi0xMS0yOVQwNiUzQTA2JTNBMjBaJTIyJTJDJTIydHlwZSUyMiUzQSUyMnRpbWVmcmFtZSUyMiU3RCUyQyUyMmFjY291bnRJZCUyMiUzQSUyMjQ2MzM0MTU3NDM5NjAzNzQwMjQlMjIlMkMlMjJwcm9kdWN0JTIyJTNBJTIybW9uZXlUcmFuc2ZlckRldGFpbHMlMjIlN0QlNUQlMkMlMjJwcm9maWxlJTIyJTNBMyUyQyUyMnByb3ZlbmFuY2UlMjIlM0FudWxsJTJDJTIycmVjZWlwdElkJTIyJTNBJTIyY3JfNHBmSTNyMVg4YU9IckREd3J3QzAxTkhDeE9YbFcxJTIyJTJDJTIycmVjZWlwdFZlcnNpb24lMjIlM0ExJTJDJTIydGltZXN0YW1wJTIyJTNBJTIyMjAyMi0xMS0yOVQxOCUzQTM1JTNBMDhaJTIyJTJDJTIydmVyc2lvbiUyMiUzQSUyMjElRjYlN9U=
        keyId:
          type: string
          description: The Finicity key identifier is used to sign the access key
          example: 867-530-900
        timestamp:
          $ref: '#/components/schemas/DateTimeWithZone'
    ThirdPartyAccessReceipt:
      type: object
      description: An object representing consent receipt
      properties:
        profile:
          type: integer
          description: Representation of the type of consent receipt
          example: 3
        version:
          type: string
          description: A schema version of receipt
          example: '1'
        receiptId:
          type: string
          description: This is officially the Consent Receipt ID, but is aliased as the Access Key ID. This is a unique identifier managed by Finicity that points to the contents of this JSON document.
          example: cr_4pfI2r1X8aOHrDDwrwC01NHTxOXlT1
        customerId:
          type: string
          description: This is recipient's customerId represented as a pseudo identifier
          example: '3465230025077724000'
        partnerId:
          $ref: '#/components/schemas/PartnerId'
        products:
          type: array
          items:
            $ref: '#/components/schemas/ThirdPartyAccessProduct'
        provenance:
          $ref: '#/components/schemas/ThirdPartyAccessProvenance'
        timestamp:
          $ref: '#/components/schemas/DateTimeWithZone'
    AssetId:
      type: string
      description: An asset ID. Generated by Data Connect or by using the Store Customer Pay Statement API.
      example: 097545c5-1c2a-4f20-a5ef-77f0820344c9-2018601178
    PartnerId:
      type: string
      description: Your Partner ID displayed in the [Developer Dashboard](https://developer.mastercard.com/account/log-in)
      example: '1234583871234'
    ThirdPartyAccessReceiptData:
      type: object
      description: An object representing consent access data
      properties:
        receipt:
          $ref: '#/components/schemas/ThirdPartyAccessReceipt'
        proof:
          $ref: '#/components/schemas/ThirdPartyAccessProof'
    ThirdPartyAccessKeyData:
      description: 'An object representing the third party access key request


        * `customerId`: This is recipient''s customer identifier

        * `partnerId`: This is recipient partner identifier

        * `thirdPartyPartnerId`: This is requester''s partner identifier

        * `products`: Array of values representing the Mastercard Open Finance APIs for

        which access needs to be generated.'
      type: object
      required:
      - customerId
      - partnerId
      - thirdPartyPartnerId
      - products
      properties:
        customerId:
          $ref: '#/components/schemas/CustomerId'
        partnerId:
          $ref: '#/components/schemas/PartnerId'
        thirdPartyPartnerId:
          $ref: '#/components/schemas/PartnerId'
        provenance:
          $ref: '#/components/schemas/ThirdPartyAccessProvenance'
        products:
          type: array
          items:
            $ref: '#/components/schemas/ThirdPartyAccessProduct'
    DateTimeWithZone:
      type: string
      format: date-time
      description: A date-time with time zone
      example: '2022-03-10T06:06:20.042584549Z'
    CustomerId:
      type: string
      description: A customer ID. See Add Customer API for how to create a customer ID.
      example: '1005061234'
    ThirdPartyAccessProduct:
      description: Product for which access token to be generated
      type: object
      required:
      - product
      - accountId
      - accessPeriod
      properties:
        product:
          $ref: '#/components/schemas/ThirdPartyAccessProductTypes'
        payorId:
          type: string
          description: The Finicity Partner ID who should be billed when the Requester requests data from Finicity. If no value specified, then the Recipient will be billed.
          example: '2445581559892'
        maxCalls:
          type: integer
          description: Max number of calls to the consented product (consented API)
          example: 200
        accountId:
          $ref: '#/components/schemas/AccountId'
        accessPeriod:
          $ref: '#/components/schemas/ThirdPartyAccessPeriod'
    ConsentReceiptId:
      type: string
      description: Third party access key receipt ID. Generated by generate third party access key API.
      example: cr_4pfI3r1X8aOHrDDwrwC01NHFxOXlT1
  parameters:
    ConsentReceiptIdParameter:
      description: Third party access key receipt ID
      name: consentReceiptId
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/ConsentReceiptId'
      example: cr_4pfI3r1X8aOHrDDwrwC01NHFxOXlT1
  responses:
    GenerateThirdPartyAccessKeyResponse:
      description: The third party access key was successfully generated
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ThirdPartyAccessKeyReceiptData'
    BadRequestErrorResponse:
      description: The request was rejected
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
          examples:
            PermissiblePurposeCodeExample:
              $ref: '#/components/examples/PermissiblePurposeCodeExample'
            InvalidForesightReportRequestExample:
              $ref: '#/components/examples/InvalidForesightReportRequestExample'
            BothCraAndFtcPurposeTrueExample:
              $ref: '#/components/examples/BothCraAndFtcPurposeTrueExample'
            MissingFieldExample:
              $ref: '#/components/examples/MissingFieldExample'
            InvalidFieldExample:
              $ref: '#/components/examples/InvalidFieldExample'
            InvalidExperienceFieldExample:
              $ref: '#/components/examples/InvalidExperienceFieldExample'
            GenericBadRequestExample:
              $ref: '#/components/examples/GenericBadRequestExample'
            AccountTypeNotSupportedExample:
              $ref: '#/components/examples/AccountTypeNotSupportedExample'
            ResellerPartnerNotAuthorizedExample:
              $ref: '#/components/examples/ResellerPartnerNotAuthorizedExample'
            ResellerInvalidDateRangeExample:
              $ref: '#/components/examples/ResellerInvalidDateRangeExample'
            ResellerInvalidDateRangeLessThanZeroExample:
              $ref: '#/components/examples/ResellerInvalidDateRangeLessThanZeroExample'
            ResellerInvalidDateRangeGreaterThanEndDateExample:
              $ref: '#/components/examples/ResellerInvalidDateRangeGreaterThanEndDateExample'
            ResellerInvalidDateRangeGreaterThan31DaysExample:
              $ref: '#/components/examples/ResellerInvalidDateRangeGreaterThan31DaysExample'
            CustomerReportLimitExceedExample:
              $ref: '#/components/examples/CustomerReportLimitExceedExample'
            InvalidConsumerSSNExample:
              $ref: '#/components/examples/InvalidConsumerSSNExample'
            InvalidConsumerPhoneExample:
              $ref: '#/components/examples/InvalidConsumerPhoneExample'
            InvalidConsumerEmailExample:
              $ref: '#/components/examples/InvalidConsumerEmailExample'
            InvalidValue:
              $ref: '#/components/examples/InvalidValueExample'
    UpdateThirdPartyAccessKeyResponse:
      description: The third party access key was successfully updated
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ThirdPartyAccessKeyReceiptData'
    ResourceNotFoundErrorResponse:
      description: The resource doesn't exist
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
          examples:
            ConsumerNotFoundExample:
              $ref: '#/components/examples/ConsumerNotFoundExample'
            NoAccountForInstitutionLoginIdExample:
              $ref: '#/components/examples/NoAccountForInstitutionLoginIdExample'
            CustomerNotFoundExample:
              $ref: '#/components/examples/CustomerNotFoundExample'
            NoConsumerForCustomerExample:
              $ref: '#/components/examples/NoConsumerForCustomerExample'
            ResourceNotFoundExample:
              $ref: '#/components/examples/ResourceNotFoundExample'
            NoRegisteredApplicationExample:
              $ref: '#/components/examples/NoRegisteredApplicationExample'
            ResellerNoDataForPartnerExample:
              $ref: '#/components/examples/ResellerNoDataForPartnerExample'
            ResellerNoReportForPartnerExample:
              $ref: '#/components/examples/ResellerNoReportForPartnerExample'
    RevokeThirdPartyAccessKeyResponse:
      description: The third party access key was successfully revoked
    UnauthorizedErrorResponse:
      description: The request lacks valid authentication credentials. Check "Finicity-App-Key" or "Finicity-App-Token".
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
          examples:
            ExpiredTokenExample:
              $ref: '#/components/examples/ExpiredTokenExample'
            MissingFinicityAppKeyExample:
              $ref: '#/components/examples/MissingFinicityAppKeyExample'
            MissingFinicityAppTokenExample:
              $ref: '#/components/examples/MissingFinicityAppTokenExample'
            InvalidFinicityAppTokenExample:
              $ref: '#/components/examples/InvalidFinicityAppTokenExample'
            ExpiredFinicityAppTokenExample:
              $ref: '#/components/examples/ExpiredFinicityAppTokenExample'
            BadCredentialsExample:
              $ref: '#/components/examples/BadCredentialsExample'
        text/plain:
          schema:
            type: string
            example: Invalid (Finicity-App-Key)
  requestBodies:
    GenerateThirdPartyAccessKeyRequest:
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ThirdPartyAccessKeyData'
    UpdateThirdPartyAccessKeyRequest:
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ThirdPartyAccessKeyData'
  securitySchemes:
    FinicityAppKey:
      name: Finicity-App-Key
      type: apiKey
      in: header
      description: The "Finicity-App-Key" from the developer dashboard
    FinicityAppToken:
      name: Finicity-App-Token
      type: apiKey
      in: header
      description: A token returned by the `/authentication` API