Submit Pre-Approved Application

An introduction to the Submit Pre-Approved Application endpoint.

📘

Early Access

Credit API endpoints are currently being finalised as part of ongoing product development. While we do not anticipate significant changes, some interfaces, behaviours, and documentation may be refined before general availability.

The Submit Pre-Approved Application endpoint submits a credit application for a customer who has already been pre-approved for a line of credit. Use this endpoint for applicants who have already passed the necessary diligence checks before submission.

Unlike the standard Create Credit Application endpoint, this endpoint bypasses the standard decisioning flow. The credit limit, cash limit, and interest rates are determined prior to submission and must be included in the request. On a successful response, a customer record, line of credit account, and payment card are created immediately.

📘

More Information

For more information about the application process, see: Credit Applications and Origination.

Prerequisites

To integrate calls to the Submit Pre-Approved Application endpoint, you need:

  • Your own user interface, such as a mobile app or web page, to capture applicant information and display confirmation to the user.
  • The credit limit, cash limit, and interest rates for the applicant, determined as part of your pre-approval diligence process before calling this endpoint.
  • A subscription to Thredd webhooks so that you can receive application status updates and communicate them to an applicant via your user interface.

Example Request

Submit a pre-approved application by making a POST request to the Submit Pre-Approved Application endpoint.

POST {{baseUrl}}/api/v1/credit/applications/pre-approved

Example Payload

The following examples show the payload for the Submit Pre-Approved Application endpoint.

{
  "productId": "string",
  "title": "string",
  "firstName": "string",
  "middleName": "string",
  "lastName": "string",
  "nameSuffix": "NONE | JR | SR | II | III | IV | V | VI | VII | VIII | IX",
  "dateOfBirth": {
    "year": 0,
    "month": 0,
    "day": 0
  },
  "nationalId": {
    "idNumber": "string",
    "idType": "SSN"
  },
  "customerType": "INDIVIDUAL",
  "gender": "UNKNOWN | FEMALE | MALE",
  "email": "string",
  "residentialAddress": {
    "houseNumber": "string",
    "addressLine1": "string",
    "addressLine2": "string",
    "city": "string",
    "state": "string",
    "zipCode": "string",
    "county": "string",
    "country": "US"
  },
  "mailingAddress": {
    "houseNumber": "string",
    "addressLine1": "string",
    "addressLine2": "string",
    "city": "string",
    "state": "string",
    "zipCode": "string",
    "county": "string",
    "country": "US"
  },
  "phoneNumbers": {
    "mobile": "string",
    "work": "string",
    "home": "string",
    "primaryContact": "MOBILE | WORK | HOME | PHONE_TYPE_UNSPECIFIED",
    "secondaryContact": "MOBILE | WORK | HOME | PHONE_TYPE_UNSPECIFIED"
  },
  "employmentStatus": "EMPLOYED | SELF_EMPLOYED | RETIRED | STUDENT | UNEMPLOYED | OTHER",
  "occupation": "string",
  "totalAnnualIncome": 0,
  "monthlyRentOrMortgage": 0,
  "bankAccounts": "CHECKING_AND_SAVINGS | CHECKING_ONLY | SAVINGS_ONLY | NONE",
  "usCitizen": true,
  "dualCitizenship": false,
  "consent": true,
  "ipAddress": "string",
  "creditLimit": 0,
  "cashLimit": 0,
  "cashInterestRate": 0,
  "purchasesInterestRate": 0,
  "employerName": "string"
}
{
  "productId": "prod_123456",
  "title": "Ms",
  "firstName": "Known",
  "middleName": "Lee",
  "lastName": "Person",
  "nameSuffix": "JR",
  "dateOfBirth": {
    "year": 1990,
    "month": 4,
    "day": 15
  },
  "nationalId": {
    "idNumber": "123-45-6789",
    "idType": "SSN"
  },
  "customerType": "INDIVIDUAL",
  "gender": "FEMALE",
  "email": "[email protected]",
  "residentialAddress": {
    "addressLine1": "1234 Test St",
    "city": "Any Town",
    "state": "TX",
    "zipCode": "73301",
    "country": "US"
  },
  "phoneNumbers": {
    "mobile": "+14155552671",
    "primaryContact": "MOBILE"
  },
  "employmentStatus": "EMPLOYED",
  "occupation": "Administrator",
  "totalAnnualIncome": 72000,
  "monthlyRentOrMortgage": 1200,
  "bankAccounts": "CHECKING_AND_SAVINGS",
  "usCitizen": true,
  "dualCitizenship": false,
  "consent": true,
  "ipAddress": "10.0.0.0",
  "creditLimit": 5000,
  "cashLimit": 1000,
  "cashInterestRate": 24.99,
  "purchasesInterestRate": 19.99,
  "employerName": "Acme Corp"
}

Application Object

The pre-approved application object shares most fields with the standard credit application. The following fields are additional to, or differ from, the standard application.

AttributeDescription
productIdstring. Required. The unique ID of the credit product.
titlestring. Required. The title of the applicant.
firstNamestring. Required. The first name of the applicant. Used in application and customer records, verification checks, correspondence, and as the name on the front of the card. Maximum length is 50 characters.
middleNamestring. Optional. The middle name of the applicant, if applicable. Maximum length is 50 characters.
lastNamestring. Required. The last name of the applicant. Used in application and customer records, verification checks, and correspondence. Maximum length is 50 characters.
nameSuffixstring. Required. The suffix of the applicant. Possible values: NONE, JR, SR, II, III, IV, V, VI, VII, VIII, IX.
dateOfBirthobject. Required. The date of birth of the applicant, used in identity and verification checks and applicant records. Fields: year (integer), month (integer), day (integer). For month, the value is the month number in a calendar year; for example, 1 represents January and 12 represents December.
nationalIdobject. Required. The national identification details of the applicant. Fields: idNumber (string) — only digits and hyphens are allowed; idType (string) — possible values: SSN. An idType of SSN requires a corresponding idNumber of nine digits, in the format: ###-##-####.
customerTypestring. Required. The customer type of the applicant. Possible values: INDIVIDUAL.
genderstring. Optional. The gender of the applicant. Defaults to UNKNOWN if not specified. Possible values: UNKNOWN, FEMALE, MALE.
emailstring. Required. The primary email address of the applicant.
residentialAddressobject. Required. The primary residence or home address of the applicant. Fields: addressLine1 (required, string), city (required, string), zipCode (required, string), country (required, string), houseNumber (optional, string), addressLine2 (optional, string), state (optional, string), county (optional, string). The country field must be a two-letter ISO 3166 alpha-2 country code. Accepted values: US.
mailingAddressobject. Optional. The mailing address of the applicant. If included, must follow the same format as residentialAddress.
phoneNumbersobject. Required. The phone numbers of the applicant. Fields: mobile (required, string) — acts as the contact number for all SMS functionality; work (optional, string); home (optional, string); primaryContact (optional, string) — possible values: MOBILE, WORK, HOME, PHONE_TYPE_UNSPECIFIED; secondaryContact (optional, string) — possible values: MOBILE, WORK, HOME, PHONE_TYPE_UNSPECIFIED. Phone numbers must be in E.164 format, with a maximum of 15 digits. For example: +14155552671.
employmentStatusstring. Optional. Employment status of the applicant, if known. Possible values: EMPLOYED, SELF_EMPLOYED, RETIRED, STUDENT, UNEMPLOYED, OTHER.
occupationstring. Optional. The occupation of the applicant.
totalAnnualIncomeinteger. Optional. The total annual income of the applicant.
monthlyRentOrMortgageinteger. Optional. The amount that the applicant is required to pay for their monthly rent or mortgage.
bankAccountsstring. Optional. The type of bank account that the applicant holds, if any. Possible values: CHECKING_AND_SAVINGS, CHECKING_ONLY, SAVINGS_ONLY, NONE.
usCitizenboolean. Optional. Whether the applicant is a U.S. Citizen (a Citizen of the United States).
dualCitizenshipboolean. Optional. Whether the applicant is a legal citizen of more than one country.
consentboolean. Required. Whether the applicant consents to submitting the application.
ipAddressstring. Optional. The IP address of the applicant to aid fraud detection.
creditLimitinteger. Required. The credit limit for the account. Must be a positive value.
cashLimitinteger. Required. The cash advance limit for the account. Must be a positive value.
cashInterestRatenumber. Required. The interest rate for cash advances.
purchasesInterestRatenumber. Required. The interest rate for purchases.
employerNamestring. Optional. The name of the applicant's employer.
📘

Note

Unlike a standard review application, most applicant-detail fields (employment, income, citizenship, and so on) are optional for a pre-approved application, since you have already completed this diligence yourself. consent is still required.

Example Response

A successful request returns a 200 HTTP code. Unlike the standard application flow, a pre-approved application immediately creates the customer record, line of credit account, and payment card. The response includes the assigned customer ID and account ID.

📘

Note

If the request contains invalid data or is incomplete, the system returns a 422 HTTP error and details of the validation failure.

{
  "applicationType": "pre_approved",
  "applicationId": "app_123456",
  "accountHolderId": "ah_123456",
  "accountId": "acc_123456",
  "status": "APPROVED",
  "productId": "prod_123456",
  "title": "Ms",
  "firstName": "Known",
  "middleName": "Lee",
  "lastName": "Person",
  "nameSuffix": "JR",
  "dateOfBirth": {
    "year": 1990,
    "month": 4,
    "day": 15
  },
  "nationalId": {
    "idNumber": "123-45-6789",
    "idType": "SSN"
  },
  "customerType": "INDIVIDUAL",
  "gender": "FEMALE",
  "email": "[email protected]",
  "residentialAddress": {
    "addressLine1": "1234 Test St",
    "city": "Any Town",
    "state": "TX",
    "zipCode": "73301",
    "country": "US"
  },
  "phoneNumbers": {
    "mobile": "+14155552671",
    "primaryContact": "MOBILE"
  },
  "employmentStatus": "EMPLOYED",
  "occupation": "Administrator",
  "totalAnnualIncome": 72000,
  "monthlyRentOrMortgage": 1200,
  "bankAccounts": "CHECKING_AND_SAVINGS",
  "usCitizen": true,
  "dualCitizenship": false,
  "consent": true,
  "ipAddress": "10.0.0.0",
  "creditLimit": 5000,
  "cashLimit": 1000,
  "cashInterestRate": "24.99",
  "purchasesInterestRate": "19.99",
  "customerId": "cust_123456",
  "createdAt": 1736238041798277,
  "updatedAt": 1736238041798277,
  "clientAssignedId": 100123,
  "clientAssignedLocId": 200456,
  "employerName": "Acme Corp"
}
{
  "detail": [
    {
      "loc": ["body", "creditLimit"],
      "msg": "Field required",
      "type": "missing"
    }
  ]
}

Response Fields

A successful response echoes back the submitted application object and includes the following additional fields:

FieldTypeDescription
applicationTypestringThe type of application. Value is always pre_approved.
applicationIdstringThe unique ID of the application.
accountHolderIdstringThe unique ID of the account holder created for this applicant.
accountIdstringThe unique ID of the line of credit account.
statusstringThe status of the application. See Application Status below.
customerIdstringThe unique ID of the customer record created for the applicant. Only returned when the application is created — it is not included when retrieving the application later via Get Credit Application by ID.
clientAssignedIdintegerThe identifier assigned to the customer record in the LoanPro LMS.
clientAssignedLocIdintegerThe identifier assigned to the line of credit in the LoanPro LMS.
createdAtintegerUnix timestamp in microseconds when the application was created.
updatedAtintegerUnix timestamp in microseconds when the application was last updated.

Application Status

StatusDescription
APPROVEDThe application has been approved and the line of credit and payment card have been created.
DECLINEDThe application has been declined.

Error Messages

If there is a problem with the request, the response returns a 422 HTTP error containing details of the validation failure. Possible reasons include (this is not a complete list):

  • A required field or its value is missing from the application object
  • Incorrect formatting for a field value, such as the national ID number, phone number, or email address
  • An invalid value in the application object, such as an unsupported country code
  • An invalid structure in the application object, such as for an address field
  • A creditLimit or cashLimit value of zero or less
📘

More Information

For more information about the application process, see: Credit Applications and Origination.



Did this page help you?