BCTT Partners Portal API - Developer Portal
  • Documentation
  • API Reference
Authentication
    Authenticatepost
Partners
    Callback UpdateputCallback DeletedeleteCallback ListgetCallback Echopost
Processes
    Process DetailgetProcess UpdateputProcess ListgetProcess CreatepostProcess SubmitpostProcess Canceldelete
ProcessesBorrower
    Borrower GetgetBorrower UpdateputBorrower DeletedeleteBorrower ListgetBorrower Createpost
ProcessesDocument
    Document GetgetDocument UpdateputDocument DeletedeleteDocument ListgetDocument Createpost
ProcessesESIS
    Process ESIS GetgetProcess ESIS Emailget
ProcessesMessage
    Processes Message ListgetProcesses Message Createpost
ProcessesProperty
    Property ListgetProperty Updateput
Simulations
    Simulation ListgetSimulation CreatepostSimulation DetailgetSimulation CanceldeleteSimulation UpdatepatchSimulation Validatepost
SimulationsESIS
    Simulation ESIS GetgetSimulation ESIS Emailget
SimulationsMessages
    Simulations Message ListgetSimulations Message Createpost
Taxonomy
    Broker Types GetgetBroker Sub Types GetgetBroker Classifications GetgetBroker Fee Types GetgetBroker Statuses GetgetBroker IVA Regimes GetgetBroker Retention Regimes GetgetBroker Extract Periodicity GetgetCountries GetgetCountry With Districts GetgetDistricts GetgetDistricts With Counties GetgetCounties GetgetCounty With Parishes GetgetParishes GetgetDocument Types GetgetDocument Categories GetgetProduct Purposes GetgetLoan Purposes GetgetProduct Schemes GetgetIndex Type Sub Categories GetgetIndex Types GetgetIndex Type List Mixed GetgetFixed Fixed Period GetgetMixed Fixed Period GetgetBank Charge Types GetgetProperty Typologies GetgetEntity Types GetgetIdentification Documents GetgetMarital Statuses GetgetMatrimonial Regimes GetgetResidence Types GetgetGenders GetgetProfessions GetgetEmployment Contract Types GetgetEmployment Situations GetgetEmployment Department Positions GetgetKey Borrower Relations GetgetProposal Cancel Reasons GetgetProposal Reject Reasons GetgetSimulation Reject Reasons GetgetWorkflow Phases GetgetWorkflow States Simulation GetgetWorkflow States Proposal GetgetRetrieves a paginated list of notification typesget
Schemas
Partners Portal API
Partners Portal API

ProcessesBorrower

Endpointhttps://api-qua-portalparceiros.bancoctt.pt

Borrower Get

GET
https://api-qua-portalparceiros.bancoctt.pt
/v1/processes/{processUniqueId}/borrower/{borrowerUniqueId}

Retrieves borrower detail data for a specific process. This endpoint retrieves detailed information for a borrower associated with a mortgage process. It validates that the process exists for the current broker and that the specified borrower belongs to the process. If either validation fails, a corresponding validation error is returned. The response data is localized using the language configured in the current request context.

Borrower Get › path Parameters

processUniqueId
string · uuid · required

Unique identifier of the mortgage process.

borrowerUniqueId
string · uuid · required

Unique identifier of the borrower within the process.

Borrower Get › Headers

Authorization
string · required

Bearer token for authentication. Format: Bearer {token}

Borrower Get › Responses

The borrower details were successfully retrieved.

borrowerUniqueID
string · uuid

Unique identifier for the borrower

borrowerTypeID
integer · int32

Type identifier for the borrower (e.g., KeyBorrower, Borrower)

borrowerTypeDescription
string

Description of the borrower type

keyBorrowerRelationID
integer · int32

Relation identifier to the key borrower (if applicable)

keyBorrowerRelationDescription
string

Description of the relation to the key borrower (if applicable)

object
object
object
GET/v1/processes/{processUniqueId}/borrower/{borrowerUniqueId}
curl --request GET \
  --url https://api-qua-portalparceiros.bancoctt.pt/v1/processes/:processUniqueId/borrower/:borrowerUniqueId \
  --header 'Authorization: <string>'
shell
Example Responses
{
  "borrowerUniqueID": "b3d9f6a1-2c34-4e9f-9f5a-1d2e3f4a5b6c",
  "borrowerTypeID": 1,
  "borrowerTypeDescription": "KeyBorrower",
  "keyBorrowerRelationID": 1,
  "keyBorrowerRelationDescription": "Spouse",
  "borrowerPersonalData": {
    "name": "John Doe",
    "birthDate": "1985-04-12",
    "taxID": "123456789",
    "socialSecurityNumber": "987-65-4321",
    "phone": "+351212345678",
    "mobile": "+351912345678",
    "email": "[email protected]",
    "genderID": 2,
    "genderDescription": "Male",
    "nationalityID": 1,
    "nationalityDescription": "Portuguese",
    "identificationDocumentTypeID": 1,
    "identificationDocumentTypeDescription": "Citizen Card",
    "identificationDocumentNumber": "AB123456",
    "checkDigit": "XYZ0",
    "identificationDocumentExpiredDate": "2028-12-31",
    "maritalStatusID": 3,
    "maritalStatusDescription": "Married",
    "matriomonialRegimeID": 1,
    "matriomonialRegimeDescription": "General Communion",
    "residenceTypeID": 5,
    "residenceTypeDescription": "Own",
    "academicLevelID": 4,
    "academicLevelDescription": "Bachelor",
    "dependentsNumber": 2,
    "address": "Rua Exemplo 123",
    "zipCode": "1000-001",
    "zipCodeLocal": "Lisbon",
    "doorNumber": "A",
    "floor": "2",
    "countryID": 1,
    "countryDescription": "Portugal"
  },
  "borrowerFinancialData": {
    "incomeWagesPensions": 2500,
    "incomeGreenReceipts": 0,
    "incomeRents": 500,
    "incomeOthers": 100,
    "installmentHousingCredit": 300,
    "installmentPersonalCredit": 0,
    "installmentAutoLeasingCredit": 0,
    "installmentCreditCard": 50,
    "installmentBankOverdraft": 0,
    "installmentOther": 0,
    "hasSocialSecurityDebt": false
  },
  "borrowerProfessionalData": {
    "employmentProfessionID": 10,
    "employmentProfessionDescription": "Construction",
    "employmentSituationID": 1,
    "employmentsSituationDescription": "Self Employed",
    "employmentPositionDepartmentID": 5,
    "employmentPositionDepartmentDescription": "Administrative",
    "employmentContractTypeID": 1,
    "employmentContractTypeDescription": "Effective",
    "employerName": "Acme Corp",
    "employerTaxID": "123456789",
    "employmentDurationMonths": 48
  }
}
json
application/json

Borrower Update

PUT
https://api-qua-portalparceiros.bancoctt.pt
/v1/processes/{processUniqueId}/borrower/{borrowerUniqueId}

Updates an existing borrower for a process. This endpoint updates borrower information within a mortgage process. The request payload is mapped and validated against the process, borrower, and broker context. If validation passes, the borrower data is updated and the operation is attributed to the current user.

Borrower Update › path Parameters

processUniqueId
string · uuid · required

Unique identifier of the mortgage process.

borrowerUniqueId
string · uuid · required

Unique identifier of the borrower to update.

Borrower Update › Headers

Authorization
string · required

Bearer token for authentication. Format: Bearer {token}

Borrower Update › Request Body

borrowerTypeId
integer · int32

Type identifier for the borrower (e.g., KeyBorrower, borrower)

keyBorrowerRelationId
integer · int32

Relation identifier to the key borrower (optional)

object
object
object

Borrower Update › Responses

The borrower was successfully updated.

object
PUT/v1/processes/{processUniqueId}/borrower/{borrowerUniqueId}
curl --request PUT \
  --url https://api-qua-portalparceiros.bancoctt.pt/v1/processes/:processUniqueId/borrower/:borrowerUniqueId \
  --header 'Authorization: <string>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "borrowerTypeId": 1,
  "keyBorrowerRelationId": 0,
  "personalDataBorrowerRequest": {
    "name": "John Doe",
    "birthDate": "1985-04-12",
    "taxId": "123456789",
    "phone": "212345678",
    "mobile": "912345678",
    "email": "[email protected]",
    "genderId": 1,
    "nationalityId": 1,
    "identificationDocumentTypeId": 1,
    "identificationDocumentNumber": "AB123456",
    "checkDigit": "XYZ0",
    "identificationDocumentExpiredDate": "2028-12-31",
    "socialSecurityNumber": "987654321",
    "maritalStatusId": 1,
    "matrimonialRegimeId": 1,
    "residenceTypeId": 1,
    "academicLevelId": 3,
    "dependentsNumber": 2,
    "address": "Rua Exemplo 123",
    "zipCode": "1000-001",
    "zipCodeLocal": "Lisbon",
    "doorNumber": "A",
    "floor": "2",
    "countryId": 1
  },
  "financialDataBorrowerRequest": {
    "incomeWagesPensions": 2500,
    "incomeGreenReceipts": 0,
    "incomeRents": 500,
    "incomeOthers": 100,
    "installmentHousingCredit": 300,
    "installmentPersonalCredit": 0,
    "installmentAutoLeasingCredit": 0,
    "installmentCreditCard": 50,
    "installmentBankOverdraft": 0,
    "installmentOther": 0,
    "hasSocialSecurityDebt": false
  },
  "professionalDataBorrowerRequest": {
    "employmentProfessionId": 10,
    "employmentSituationId": 1,
    "employmentPositionDepartmentID": 5,
    "employmentContractTypeId": 2,
    "employerName": "Acme Corp",
    "employerTaxId": "123456789",
    "employmentDurationMonths": 48
  }
}
'
shell
Example Request Body
{
  "borrowerTypeId": 1,
  "keyBorrowerRelationId": 0,
  "personalDataBorrowerRequest": {
    "name": "John Doe",
    "birthDate": "1985-04-12",
    "taxId": "123456789",
    "phone": "212345678",
    "mobile": "912345678",
    "email": "[email protected]",
    "genderId": 1,
    "nationalityId": 1,
    "identificationDocumentTypeId": 1,
    "identificationDocumentNumber": "AB123456",
    "checkDigit": "XYZ0",
    "identificationDocumentExpiredDate": "2028-12-31",
    "socialSecurityNumber": "987654321",
    "maritalStatusId": 1,
    "matrimonialRegimeId": 1,
    "residenceTypeId": 1,
    "academicLevelId": 3,
    "dependentsNumber": 2,
    "address": "Rua Exemplo 123",
    "zipCode": "1000-001",
    "zipCodeLocal": "Lisbon",
    "doorNumber": "A",
    "floor": "2",
    "countryId": 1
  },
  "financialDataBorrowerRequest": {
    "incomeWagesPensions": 2500,
    "incomeGreenReceipts": 0,
    "incomeRents": 500,
    "incomeOthers": 100,
    "installmentHousingCredit": 300,
    "installmentPersonalCredit": 0,
    "installmentAutoLeasingCredit": 0,
    "installmentCreditCard": 50,
    "installmentBankOverdraft": 0,
    "installmentOther": 0,
    "hasSocialSecurityDebt": false
  },
  "professionalDataBorrowerRequest": {
    "employmentProfessionId": 10,
    "employmentSituationId": 1,
    "employmentPositionDepartmentID": 5,
    "employmentContractTypeId": 2,
    "employerName": "Acme Corp",
    "employerTaxId": "123456789",
    "employmentDurationMonths": 48
  }
}
json
Example Responses
{
  "operationStatus": {
    "operationStatusCode": "020101",
    "operationStatusMessage": "Process Updated successfully"
  }
}
json
application/json

Borrower Delete

DELETE
https://api-qua-portalparceiros.bancoctt.pt
/v1/processes/{processUniqueId}/borrower/{borrowerUniqueId}

Deletes a borrower from a process. Does not delete KeyBorrower. This endpoint removes a borrower from the specified mortgage process, excluding key borrowers which cannot be deleted. Validation ensures the borrower exists, belongs to the process, and is eligible for deletion before the operation is executed.

Borrower Delete › path Parameters

processUniqueId
string · uuid · required

Unique identifier of the mortgage process.

borrowerUniqueId
string · uuid · required

Unique identifier of the borrower to delete.

Borrower Delete › Headers

Authorization
string · required

Bearer token for authentication. Format: Bearer {token}

Borrower Delete › Responses

The borrower was successfully deleted.

object
DELETE/v1/processes/{processUniqueId}/borrower/{borrowerUniqueId}
curl --request DELETE \
  --url https://api-qua-portalparceiros.bancoctt.pt/v1/processes/:processUniqueId/borrower/:borrowerUniqueId \
  --header 'Authorization: <string>'
shell
Example Responses
{
  "operationStatus": {
    "operationStatusCode": "020101",
    "operationStatusMessage": "Process Updated successfully"
  }
}
json
application/json

Borrower List

GET
https://api-qua-portalparceiros.bancoctt.pt
/v1/processes/{processUniqueId}/borrower

Retrieves all borrowers associated with a process. This endpoint returns a list of all borrowers linked to the specified mortgage process. It validates that the process exists and is accessible to the current broker before retrieving borrower data. The response is localized based on the language defined in the request context.

Borrower List › path Parameters

processUniqueId
string · uuid · required

Unique identifier of the mortgage process.

Borrower List › Headers

Authorization
string · required

Bearer token for authentication. Format: Bearer {token}

Borrower List › Responses

The list of borrowers was successfully retrieved.

object[]
GET/v1/processes/{processUniqueId}/borrower
curl --request GET \
  --url https://api-qua-portalparceiros.bancoctt.pt/v1/processes/:processUniqueId/borrower \
  --header 'Authorization: <string>'
shell
Example Responses
{
  "borrowerList": [
    {
      "borrowerUniqueID": "b3d9f6a1-2c34-4e9f-9f5a-1d2e3f4a5b6c",
      "borrowerTypeID": 1,
      "borrowerTypeDescription": "KeyBorrower",
      "keyBorrowerRelationID": 1,
      "keyBorrowerRelationDescription": "Spouse"
    }
  ]
}
json
application/json

Borrower Create

POST
https://api-qua-portalparceiros.bancoctt.pt
/v1/processes/{processUniqueId}/borrower

Creates a new borrower for a process. This endpoint creates a new borrower associated with the specified mortgage process. The request payload is mapped to a service-level model and validated against the process and broker context. If validation succeeds, the borrower is created and associated with the current user for auditing purposes.

Borrower Create › path Parameters

processUniqueId
string · uuid · required

Unique identifier of the mortgage process.

Borrower Create › Headers

Authorization
string · required

Bearer token for authentication. Format: Bearer {token}

Borrower Create › Request Body

borrowerTypeId
integer · int32 · required

Type identifier for the borrower (e.g., KeyBorrower, borrower)

object · required
object · required
keyBorrowerRelationId
integer · int32

Relation identifier to the key borrower (optional)

object

Borrower Create › Responses

The borrower was successfully created.

object
object
POST/v1/processes/{processUniqueId}/borrower
curl --request POST \
  --url https://api-qua-portalparceiros.bancoctt.pt/v1/processes/:processUniqueId/borrower \
  --header 'Authorization: <string>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "borrowerTypeId": 1,
  "keyBorrowerRelationId": 0,
  "personalDataBorrowerRequest": {
    "name": "John Doe",
    "birthDate": "1985-04-12",
    "taxId": "123456789",
    "phone": "+351212345678",
    "mobile": "912345678",
    "email": "[email protected]",
    "genderId": 2,
    "nationalityId": 1,
    "identificationDocumentTypeId": 1,
    "identificationDocumentNumber": "AB123456",
    "checkDigit": "XYZ0",
    "identificationDocumentExpiredDate": "2028-12-31",
    "socialSecurityNumber": "987654321",
    "maritalStatusId": 1,
    "matrimonialRegimeId": 1,
    "residenceTypeId": 1,
    "academicLevelId": 3,
    "dependentsNumber": 2,
    "address": "Rua Exemplo 123",
    "zipCode": "1000-001",
    "zipCodeLocal": "Lisbon",
    "doorNumber": "A",
    "floor": "2",
    "countryId": 1
  },
  "financialDataBorrowerRequest": {
    "incomeWagesPensions": 2500,
    "incomeGreenReceipts": 0,
    "incomeRents": 500,
    "incomeOthers": 100,
    "installmentHousingCredit": 300,
    "installmentPersonalCredit": 0,
    "installmentAutoLeasingCredit": 0,
    "installmentCreditCard": 50,
    "installmentBankOverdraft": 0,
    "installmentOther": 0,
    "hasSocialSecurityDebt": false
  },
  "professionalDataBorrowerRequest": {
    "employmentProfessionId": 10,
    "employmentSituationId": 1,
    "employmentPositionDepartmentID": 5,
    "employmentContractTypeId": 2,
    "employerName": "Acme Corp",
    "employerTaxId": "PT123456789",
    "employmentDurationMonths": 48
  }
}
'
shell
Example Request Body
{
  "borrowerTypeId": 1,
  "keyBorrowerRelationId": 0,
  "personalDataBorrowerRequest": {
    "name": "John Doe",
    "birthDate": "1985-04-12",
    "taxId": "123456789",
    "phone": "+351212345678",
    "mobile": "912345678",
    "email": "[email protected]",
    "genderId": 2,
    "nationalityId": 1,
    "identificationDocumentTypeId": 1,
    "identificationDocumentNumber": "AB123456",
    "checkDigit": "XYZ0",
    "identificationDocumentExpiredDate": "2028-12-31",
    "socialSecurityNumber": "987654321",
    "maritalStatusId": 1,
    "matrimonialRegimeId": 1,
    "residenceTypeId": 1,
    "academicLevelId": 3,
    "dependentsNumber": 2,
    "address": "Rua Exemplo 123",
    "zipCode": "1000-001",
    "zipCodeLocal": "Lisbon",
    "doorNumber": "A",
    "floor": "2",
    "countryId": 1
  },
  "financialDataBorrowerRequest": {
    "incomeWagesPensions": 2500,
    "incomeGreenReceipts": 0,
    "incomeRents": 500,
    "incomeOthers": 100,
    "installmentHousingCredit": 300,
    "installmentPersonalCredit": 0,
    "installmentAutoLeasingCredit": 0,
    "installmentCreditCard": 50,
    "installmentBankOverdraft": 0,
    "installmentOther": 0,
    "hasSocialSecurityDebt": false
  },
  "professionalDataBorrowerRequest": {
    "employmentProfessionId": 10,
    "employmentSituationId": 1,
    "employmentPositionDepartmentID": 5,
    "employmentContractTypeId": 2,
    "employerName": "Acme Corp",
    "employerTaxId": "PT123456789",
    "employmentDurationMonths": 48
  }
}
json
Example Responses
{
  "operationStatus": {
    "operationStatusCode": "020101",
    "operationStatusMessage": "Process Updated successfully"
  },
  "additionalData": {
    "borrowerUniqueID": "aa11a4b4-f234-4c03-b577-8eebd3fcc63b"
  }
}
json
application/json

ProcessesProcessesDocument