UiPath Documentation
industry-department-solutions
latest
false
Financial Services Solutions user guide
  • Overview
    • About financial services solutions
  • Financial Crime Compliance (FCC) solutions
  • Loan Origination Solution

RPA integration contracts

RPA Integration Contracts that connect the Quality Control (QA/QC) pipeline to your core banking, loan origination, and document management systems, with each contract type's schema and how to register implementations in FINSProcessRegistry.

RPA Integration Contracts are the extensibility framework that connects the QA/QC processing pipeline to your institution's core banking, loan origination, and document management systems. Each contract type defines the input and output schema for a specific integration point in the workflow.

You implement each contract as an Orchestrator process and register it in the FINSProcessRegistry Data Fabric table. The Maestro process discovers these registrations at runtime and invokes the appropriate process for each step.

There are no pre-built connectors included with QA/QC. Your institution builds the RPA implementations against your specific systems (Symitar, Encompass, OnBase, or any other), and the contract schemas provide the standardized interface they must satisfy. This separation keeps the orchestration logic independent of any specific banking system.

Overview

QA/QC requires data from multiple banking systems that are unique to your institution. To connect it to your systems, RPAs must be built that:

  • Call the Maestro process API endpoint with the loan identifier and loan type to start processing
  • Pull document data from the systems of record and write to Orchestrator storage buckets
  • Pull JSON/XML data from the systems of record
  • Transform data into the standardized formats defined in this document

RPA registry pattern

Register your data integration RPAs with the solution by placing their RPA type, path, and related details into the Data Fabric FINSProcessRegistry table. The Maestro process invokes these RPAs by name during execution.

FINSProcessRegistry table schema

FieldTypeDescription
IdUNIQUEIDENTIFIERInternal primary key
RPANameNVARCHAR(200)RPA identifier used for invocation
DisplayNameNVARCHAR(500)Human-readable name
DescriptionNVARCHAR(2000)What this RPA does
OrchestratorFolderPathNVARCHAR(500)Orchestrator folder path where the process is deployed
ProcessNameNVARCHAR(200)Process name in Orchestrator
ProcessTypeFINSProcessTypeType: DocumentRetrieval, DataRetrieval, DataParse
RPATypeVersionNVARCHAR(50)Version of the contract schema this process implements, for example 1.0
EntryPointNameNVARCHAR(200)Entry point name within the process
IsActiveBITWhether RPA is enabled
CreatedAtDATETIMEOFFSETWhen RPA was registered
LastInvokedAtDATETIMEOFFSETWhen RPA was last invoked

RPA types

RPATypePurposeWhen invoked
DocumentRetrievalPull the loan's document files and write them to the storage bucket under the provided prefixAfter loan trigger
DataRetrievalPull structured data from core banking, LOS, or other systemsAfter loan trigger
DataParseTransform/parse retrieved data into standardized formatsAfter DataRetrieval

Process Trigger Contract

To start the QA/QC workflow, the customer's dispatcher RPA calls the Maestro process's HTTP API endpoint when a new loan requires processing. UiPath does not provide this dispatcher; your institution builds and maintains it.

Endpoint location

The API trigger is deployed as part of the solution package, at <Solution folder>/Automations/Triggers/API Triggers/LoanQAQC API Trigger. The endpoint URL is available at that location, in the following format:

https://cloud.uipath.com/<org_name>/<tenant_name>/orchestrator_/t/<guid>/agenticprocess
https://cloud.uipath.com/<org_name>/<tenant_name>/orchestrator_/t/<guid>/agenticprocess

Request body

The endpoint accepts a POST request with the following JSON body:

{
  "Version": 1,
  "SourceLoanId": "LOAN-2025-001234",
  "SourceLoanType": "CommercialRealEstate"
}
{
  "Version": 1,
  "SourceLoanId": "LOAN-2025-001234",
  "SourceLoanType": "CommercialRealEstate"
}

Field definitions

FieldTypeRequiredDescription
VersionintegerYesSchema version number (currently 1). Allows for future schema changes without breaking existing integrations.
SourceLoanIdstringYesUnique loan identifier from the Loan Origination System. Used to correlate all data extraction and agent outputs.
SourceLoanTypestringYesUnique loan type identifier from the admin configuration. Used to filter which business rules apply during execution.

Example request

A complete call, including the headers Orchestrator requires:

curl -X POST \
  "https://cloud.uipath.com/<org_name>/<tenant_name>/orchestrator_/t/<guid>/agenticprocess" \
  -H "Authorization: Bearer <access_token>" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -H "X-UIPATH-FolderKey: <folder_key>" \
  -d '{
    "Version": 1,
    "SourceLoanId": "LOAN-2025-001234",
    "SourceLoanType": "CommercialRealEstate"
  }'
curl -X POST \
  "https://cloud.uipath.com/<org_name>/<tenant_name>/orchestrator_/t/<guid>/agenticprocess" \
  -H "Authorization: Bearer <access_token>" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -H "X-UIPATH-FolderKey: <folder_key>" \
  -d '{
    "Version": 1,
    "SourceLoanId": "LOAN-2025-001234",
    "SourceLoanType": "CommercialRealEstate"
  }'

Where to find each value

PlaceholderWhere to find it
<org_name>, <tenant_name>, <guid>Already contained in the endpoint URL. Using the URL as-is is more reliable than assembling it by hand.
<access_token>An OAuth 2.0 bearer token. See the authentication implementation note.
<folder_key>The key of the Orchestrator folder the solution is deployed to. See the folder scoping implementation note.

Implementation notes

  1. Authentication: The endpoint is protected by UiPath Orchestrator authentication and requires a valid OAuth 2.0 bearer token in the Authorization header. The token comes from a Confidential External Application (AdminExternal Applications) granted the Orchestrator OR.Jobs scope, whose client_id and client_secret are exchanged for a token via the client-credentials flow. An application already configured for the tenant can be reused.
  2. Folder scoping: The X-UIPATH-FolderKey header tells Orchestrator which deployed folder to start the process in. When the caller is a coded agent or an RPA running on an Orchestrator robot, the robot already runs inside a folder, so this context is supplied automatically at runtime and the header can be omitted. When the caller has no robot context, such as a curl or backend client, or a Studio Web workflow using the Integration Service Orchestrator HTTP Request connector, the folder is passed explicitly using either X-UIPATH-FolderKey (folder key) or X-UIPATH-OrganizationUnitId (numeric folder ID). The folder key or ID is shown in Orchestrator under the Solution folder's settings.
  3. Dispatcher responsibility: Your institution builds and maintains the dispatcher RPA or process that monitors the LOS for loan changes and calls the API trigger. UiPath does not provide this dispatcher.
  4. Idempotency: If the same SourceLoanId is submitted multiple times, the solution processes it again. Preventing duplicate submissions is the dispatcher's responsibility.

Document Retrieval RPA Contract

Retrieves the loan's documents from the document repository, including OnBase, FileNet, and SharePoint, and writes them to the Orchestrator storage bucket. QA/QC provides the target bucket and the loan's directory prefix; the RPA uploads every document for the loan under that prefix, preserving each file's own name.

QA/QC then scans the prefix to build the document manifest. There is no separate metadata or index step.

Input fields

FieldTypeRequiredDescription
versionintegerYesContract version for compatibility checking
loan_idstringYesLoan identifier for correlation
target_bucket_namestringYesOrchestrator storage bucket to upload the files to
target_prefixstringYesThe loan's directory prefix within the bucket ({loan_id}-{record_id_prefix}). Upload every document for this loan under this prefix; do not write outside it.

Input example

{
  "version": 2,
  "loan_id": "LOAN-2025-001234",
  "target_bucket_name": "LoanQAQC",
  "target_prefix": "LOAN-2025-001234-a1b2c3d4"
}
{
  "version": 2,
  "loan_id": "LOAN-2025-001234",
  "target_bucket_name": "LoanQAQC",
  "target_prefix": "LOAN-2025-001234-a1b2c3d4"
}

Output fields

FieldTypeDescription
versionintegerContract version, echoed from the input
loan_idstringLoan identifier, echoed from the input
statusenumOverall outcome: success or failed
uploadedarrayFile names uploaded under target_prefix

QA/QC reconciles the uploaded list against the files it finds under target_prefix, which remain the source of truth.

Note:

An empty uploaded list (no files) is a valid, non-error outcome: QA/QC records that there was nothing to extract or evaluate for the loan and completes the run.

Output example

{
  "version": 2,
  "loan_id": "LOAN-2025-001234",
  "status": "success",
  "uploaded": [
    "Application_Form.pdf",
    "Credit_Report.pdf",
    "Appraisal.pdf"
  ]
}
{
  "version": 2,
  "loan_id": "LOAN-2025-001234",
  "status": "success",
  "uploaded": [
    "Application_Form.pdf",
    "Credit_Report.pdf",
    "Appraisal.pdf"
  ]
}

Data Retrieval RPA Contract

Retrieves raw data from multiple source systems (core banking, LOS, etc.) in a single call and returns it to QA/QC. This RPA returns raw data exactly as it comes from each source system. Data transformation happens in the Data Parse RPA Contract.

Input fields

FieldTypeRequiredDescription
versionintegerYesContract version for compatibility checking
loan_idstringYesLoan identifier to retrieve data for

Input example

{
  "version": 1,
  "loan_id": "LOAN-2025-001234"
}
{
  "version": 1,
  "loan_id": "LOAN-2025-001234"
}

Output fields

FieldTypeDescription
versionintegerSchema version for forward compatibility
loan_idstringLoan identifier for correlation
sources[]arrayArray of source data objects
.friendly_namestringLogical name for this source (e.g., core, los)
.source_systemstringActual system name (e.g., Symitar, Encompass)
.extraction_timestampdatetimeWhen the data was extracted
.successbooleanWhether this source was queried successfully
.custom_dataobjectRaw data from source; structure varies by system
.error_code / .error_messagestringError details if success is false

Output example

{
  "version": 1,
  "loan_id": "LOAN-2025-001234",
  "success": true,
  "sources": [
    {
      "friendly_name": "core",
      "source_system": "Symitar",
      "extraction_timestamp": "2025-12-15T11:00:00Z",
      "success": true,
      "custom_data": {
        "source_loan_id": "7095054-0104",
        "loan_record": {
          "description": "COMMERCIAL AUTO USED",
          "type": 5015,
          "id": "0104",
          "vin": "FPPFH3D77LABCD751",
          "micr_account_number": "20104007095054",
          "first_payment_date": "11/10/2025 00:00:00",
          "open_date": "10/10/2025 00:00:00",
          "maturity_date": "10/10/2030 00:00:00",
          "payment_count": 60,
          "balance": "30219.88",
          "original_balance": "31184",
          "payment": "617.48",
          "interest_rate": "7",
          "ecoa_code": 11,
          "credit_reporting_code": 1
        },
        "pledge_name_records": [
          {
            "long_name": "OEDIPUS T MANTRA",
            "birth_date": "05/09/1980 00:00:00",
            "ssn": "241434220",
            "address": {
              "street": "1174 BOARDWALK",
              "city": "EASTLAKE",
              "state": "NV",
              "zip_code": "68990"
            }
          }
        ],
        "tracking_30": { "...": "..." },
        "tracking_51": { "...": "..." },
        "tracking_80": { "...": "..." }
      }
    },
    {
      "friendly_name": "los",
      "source_system": "Encompass",
      "extraction_timestamp": "2025-12-15T11:00:05Z",
      "success": true,
      "custom_data": {
        "loan_number": "LOAN-2025-001234",
        "loan_program": "HELOC_VARIABLE",
        "approved_amount": 150000.00,
        "interest_rate": 7.25,
        "credit_score": 742,
        "application_notes": "Longtime member requesting kitchen renovation."
      }
    }
  ]
}
{
  "version": 1,
  "loan_id": "LOAN-2025-001234",
  "success": true,
  "sources": [
    {
      "friendly_name": "core",
      "source_system": "Symitar",
      "extraction_timestamp": "2025-12-15T11:00:00Z",
      "success": true,
      "custom_data": {
        "source_loan_id": "7095054-0104",
        "loan_record": {
          "description": "COMMERCIAL AUTO USED",
          "type": 5015,
          "id": "0104",
          "vin": "FPPFH3D77LABCD751",
          "micr_account_number": "20104007095054",
          "first_payment_date": "11/10/2025 00:00:00",
          "open_date": "10/10/2025 00:00:00",
          "maturity_date": "10/10/2030 00:00:00",
          "payment_count": 60,
          "balance": "30219.88",
          "original_balance": "31184",
          "payment": "617.48",
          "interest_rate": "7",
          "ecoa_code": 11,
          "credit_reporting_code": 1
        },
        "pledge_name_records": [
          {
            "long_name": "OEDIPUS T MANTRA",
            "birth_date": "05/09/1980 00:00:00",
            "ssn": "241434220",
            "address": {
              "street": "1174 BOARDWALK",
              "city": "EASTLAKE",
              "state": "NV",
              "zip_code": "68990"
            }
          }
        ],
        "tracking_30": { "...": "..." },
        "tracking_51": { "...": "..." },
        "tracking_80": { "...": "..." }
      }
    },
    {
      "friendly_name": "los",
      "source_system": "Encompass",
      "extraction_timestamp": "2025-12-15T11:00:05Z",
      "success": true,
      "custom_data": {
        "loan_number": "LOAN-2025-001234",
        "loan_program": "HELOC_VARIABLE",
        "approved_amount": 150000.00,
        "interest_rate": 7.25,
        "credit_score": 742,
        "application_notes": "Longtime member requesting kitchen renovation."
      }
    }
  ]
}

Data Parse RPA Contract

Transforms raw data from a single source system into the normalized format expected by QA/QC. QA/QC calls this contract once for each source returned by the Data Retrieval RPA Contract.

Input fields

FieldTypeDescription
versionintegerContract version for compatibility checking
loan_idstringLoan identifier for correlation
friendly_namestringLogical name for this source (e.g., core, los)
source_systemstringActual system name (e.g., Symitar, Encompass)
extraction_timestampdatetimeWhen the data was extracted
custom_dataobjectRaw data from the source system to be parsed/mapped

Input example

QA/QC passes one source's raw payload at a time. The custom_data structure varies by institution and source system.

{
  "version": 1,
  "loan_id": "LOAN-2025-001234",
  "friendly_name": "core",
  "source_system": "Symitar",
  "extraction_timestamp": "2025-12-15T11:00:00Z",
  "custom_data": {
    "source_loan_id": "7095054-0104",
    "loan_record": {
      "description": "COMMERCIAL AUTO USED",
      "balance": "30219.88",
      "original_balance": "31184",
      "payment": "617.48",
      "interest_rate": "7",
      "maturity_date": "10/10/2030 00:00:00",
      "vin": "FPPFH3D77LABCD751"
    },
    "pledge_name_records": [
      {
        "long_name": "OEDIPUS T MANTRA",
        "birth_date": "05/09/1980 00:00:00",
        "address": {
          "street": "1174 BOARDWALK",
          "city": "EASTLAKE",
          "state": "NV",
          "zip_code": "68990"
        }
      }
    ],
    "tracking_30": {
      "vehicle_make": "CHEVROLET",
      "vehicle_model": "CAMARO",
      "vehicle_vin": "FPPFH3D77LABCD751",
      "collateral_value": "27999",
      "loan_to_value": "111.375"
    }
  }
}
{
  "version": 1,
  "loan_id": "LOAN-2025-001234",
  "friendly_name": "core",
  "source_system": "Symitar",
  "extraction_timestamp": "2025-12-15T11:00:00Z",
  "custom_data": {
    "source_loan_id": "7095054-0104",
    "loan_record": {
      "description": "COMMERCIAL AUTO USED",
      "balance": "30219.88",
      "original_balance": "31184",
      "payment": "617.48",
      "interest_rate": "7",
      "maturity_date": "10/10/2030 00:00:00",
      "vin": "FPPFH3D77LABCD751"
    },
    "pledge_name_records": [
      {
        "long_name": "OEDIPUS T MANTRA",
        "birth_date": "05/09/1980 00:00:00",
        "address": {
          "street": "1174 BOARDWALK",
          "city": "EASTLAKE",
          "state": "NV",
          "zip_code": "68990"
        }
      }
    ],
    "tracking_30": {
      "vehicle_make": "CHEVROLET",
      "vehicle_model": "CAMARO",
      "vehicle_vin": "FPPFH3D77LABCD751",
      "collateral_value": "27999",
      "loan_to_value": "111.375"
    }
  }
}

Output fields

FieldTypeDescription
successbooleanWhether parsing completed successfully
loan_idstringLoan identifier for correlation
mapped_dataobjectData mapped to well-known schema fields
.sourcestringData source identifier
.source_loan_idstringSource system loan ID
.versionstringData contract version
.loan_infoobjectCore loan information
..loan_typestringType of loan product (e.g., HELOC, AUTO LOAN)
..loan_application_idstringLoan application ID
..app_datestringApplication submission date (format: YYYY-MM-DD)
..loan_amountstringRequested loan amount in dollars
..due_datestringDue date (format: YYYY-MM-DD)

Additionally, the mapped_data object may include extra properties depending on your institution's QA/QC rules.

Output example

The output returns data mapped to the well-known schema fields. The available target fields are defined in the Schema Appendix of the Technical Overview.

{
  "success": true,
  "loan_id": "LOAN-2025-001234",
  "friendly_name": "core",
  "source_system": "Symitar",
  "extraction_timestamp": "2025-12-15T11:00:00Z",
  "mapped_data": {
    "source": "Symitar",
    "source_loan_id": "7095054-0104",
    "version": "2.0.0",
    "loan_info": {
      "loan_description": "COMMERCIAL AUTO USED",
      "loan_type": "5015",
      "loan_id": "0104",
      "account_number": "20104007095054",
      "loan_application_id": "7095054-0104",
      "app_date": "2025-10-10",
      "open_date": "2025-10-10",
      "maturity_date": "2030-10-10",
      "loan_term": "60",
      "loan_amount": "31184.00",
      "current_balance": "30219.88",
      "monthly_payment": "617.48",
      "due_date": "2025-12-10",
      "interest_rate": "7.000"
    },
    "applicant": [
      {
        "applicant_type": "Main Applicant",
        "full_name": "OEDIPUS T MANTRA",
        "first_name": "OEDIPUS",
        "middle_name": "T",
        "last_name": "MANTRA",
        "ssn": "241434220",
        "date_of_birth": "1980-05-09",
        "applicant_street": "1174 BOARDWALK",
        "applicant_city": "EASTLAKE",
        "applicant_state": "NV",
        "applicant_zip": "68990"
      }
    ],
    "guarantor": [
      { "guarantor_name": "NICHOLAUS CLAUSE" }
    ],
    "credit_report": [
      {
        "credit_report_first_name": "OEDIPUS",
        "credit_report_last_name": "MANTRA",
        "credit_report_request_date": "2025-09-30",
        "credit_score": "711"
      }
    ],
    "vehicle": {
      "vehicle_vin": "FPPFH3D77LABCD751",
      "vehicle_make": "CHEVROLET",
      "vehicle_model": "CAMARO",
      "vehicle_year": "2020",
      "collateral_value": "27999.00",
      "loan_to_value": "111.375",
      "titled_in_state": "FL"
    },
    "business_info": {
      "borrower_entity_name": "MERRY JINGLES LLC",
      "aggregate_business_name": "MERRY JINGLES LLC",
      "business_risk_rating": "4",
      "naics_number": "485310",
      "gross_annual_revenue": "120000.00",
      "aggregate_total_exposure": "83486.00"
    }
  }
}
{
  "success": true,
  "loan_id": "LOAN-2025-001234",
  "friendly_name": "core",
  "source_system": "Symitar",
  "extraction_timestamp": "2025-12-15T11:00:00Z",
  "mapped_data": {
    "source": "Symitar",
    "source_loan_id": "7095054-0104",
    "version": "2.0.0",
    "loan_info": {
      "loan_description": "COMMERCIAL AUTO USED",
      "loan_type": "5015",
      "loan_id": "0104",
      "account_number": "20104007095054",
      "loan_application_id": "7095054-0104",
      "app_date": "2025-10-10",
      "open_date": "2025-10-10",
      "maturity_date": "2030-10-10",
      "loan_term": "60",
      "loan_amount": "31184.00",
      "current_balance": "30219.88",
      "monthly_payment": "617.48",
      "due_date": "2025-12-10",
      "interest_rate": "7.000"
    },
    "applicant": [
      {
        "applicant_type": "Main Applicant",
        "full_name": "OEDIPUS T MANTRA",
        "first_name": "OEDIPUS",
        "middle_name": "T",
        "last_name": "MANTRA",
        "ssn": "241434220",
        "date_of_birth": "1980-05-09",
        "applicant_street": "1174 BOARDWALK",
        "applicant_city": "EASTLAKE",
        "applicant_state": "NV",
        "applicant_zip": "68990"
      }
    ],
    "guarantor": [
      { "guarantor_name": "NICHOLAUS CLAUSE" }
    ],
    "credit_report": [
      {
        "credit_report_first_name": "OEDIPUS",
        "credit_report_last_name": "MANTRA",
        "credit_report_request_date": "2025-09-30",
        "credit_score": "711"
      }
    ],
    "vehicle": {
      "vehicle_vin": "FPPFH3D77LABCD751",
      "vehicle_make": "CHEVROLET",
      "vehicle_model": "CAMARO",
      "vehicle_year": "2020",
      "collateral_value": "27999.00",
      "loan_to_value": "111.375",
      "titled_in_state": "FL"
    },
    "business_info": {
      "borrower_entity_name": "MERRY JINGLES LLC",
      "aggregate_business_name": "MERRY JINGLES LLC",
      "business_risk_rating": "4",
      "naics_number": "485310",
      "gross_annual_revenue": "120000.00",
      "aggregate_total_exposure": "83486.00"
    }
  }
}

Was this page helpful?

Connect

Need help? Support

Want to learn? UiPath Academy

Have questions? UiPath Forum

Stay updated