Form Submission
Designing and implementing forms for loan applications involves ensuring that the data you're collecting meets the requirements of Abacus and its database. This document helps you understand which fields are required when performing form submission.
After registering, customers will be sent two random Email and SMS codes which will be used to activate their Members Access. Customers can log into their internet banking accounts after activating their accounts.
Endpoint
Parameters
Name | Required | Description | Default Value | Example |
---|---|---|---|---|
MembershipNumber | Customer number. | 122730 | ||
EmailActivationCode | Code sent to customer's email address. | 123456 | ||
SmsActivationCode | Code sent to customer via SMS. | 123456 | ||
Pin1 | User's chosen PIN | 123456 |
Sample Request
"MembershipNumber":"122730"
"EmailActivationCode":"595090"
"SmsActivationCode":"205978"
"Pin1":"123456"
}
If the request was a success, the API will return HTTP 201 Created response and an ID of 0.
Sample Success Response
"Id":"0"
}
Failure Responses
Status Code | Description |
---|---|
409 | An account with the supplied email and phone number is already active. |
406 | The activation codes you supplied were incorrect. |
When applying for a Join Application the Abacus API needs to be sent a HTTP POST request with a Join object. As the user does not need to validate their login, the Join object only contains the JSON data from the Join application.
Request Object
"JsonData": STRING
}
The JSON data is a string that contains a collection of objects. This contains information about the applicant to be used to make a decision on the approval of the join application.
Join JSON Data
"ApplicationType": ApplicationType,
"PersonalDetails": PersonalDetails
"ContactDetails": ContactDetails
"HomeAddress": Address
"WorkAtAddress": Address,
"Employment": Employment,
"PayrollDeductions": PayrollDeductions,
"BankDetails": BankDetails
"AdditionalInformation": AdditionalInformation,
"BeneficiaryDetails": BeneficiaryDetails
"Lottery": Lottery,
}
{
"TitleId": NUMBER ?,
"FirstName": STRING
"MiddleName": STRING
"Surname": STRING
"GenderId": NUMBER ?
"MaritalStatusId": NUMBER ?
"DateOfBirth": STRING
"SelectedForce": STRING
"SelectedBranchId": NUMBER ?
"SelectedEmployedById": NUMBER ?
"NationalInsuranceNumber": STRING
"DriversLicenseNumber": STRING
"PayrollNumber": STRING
"EmployedBy": STRING
"MainMemberAccountNumber": STRING
"MainMemberRelationship": STRING
"ServiceNumber": STRING
"DependantsAges": STRING
"IncomeTaxCountryId": NUMBER ?
"IdentityNumber": STRING
"EligibilityEmployment": NUMBER ?
"EmploymentStartDate": STRING
"MemberOf": STRING
"EligibilityRetiredEmployment": NUMBER ?
"PensionNumber": STRING
"ExistingMemberName": STRING
"ExistingMemberNumber": STRING
"ForceTypeId": NUMBER ?
"BranchName": STRING
}
{
"FlatAptOfficeNo": STRING,
"HouseBuildingName": STRING,
"HouseBuildingNo": STRING,
"AddressLine1": STRING,
"AddressLine2": STRING,
"City": STRING,
"PostalCode": STRING,
"County": STRING,
"SelectedLivingArrangement": NUMBER,
"YearsAtAddress": NUMBER ?,
"MonthsAtAddress": NUMBER ?,
"PartOfLocalAuthority": BOOL ?,
}
{
"DeductionType": NUMBER,
"SetupAutomaticPayrollDeductions": BOOL ?,
"SelectedEmployer": STRING,
"PayrollNumber": STRING,
"DeductionAmount": STRING,
"MonthlyPayDate": NUMBER,
"StartPayrollDeductionsOn": STRING,
"StartPayrollDeductionsDay": NUMBER ?,
"StartPayrollDeductionsMonth": NUMBER ?,
"StartPayrollDeductionsYear": NUMBER ?,
"StartPayrollDeductionsDate": NUMBER ?,
}
{
"EthnicityId": NUMBER,
"RelatedToOfficerOfCreditUnion": BOOL,
"SubjectToCcj": BOOL,
"SubjectToBankruptcyJudgement": BOOL,
"SubjectToIva": BOOL,
"TrustDeedDischarged": DATETIME,
"SubjectToDro": BOOL,
"SubjectToDmp": BOOL,
"SubjectToMortgageLoanArrears": BOOL,
"SubjectToUndischargedBankruptcy": BOOL,
"OnSickLeave": BOOL,
"OnMaternityLeave": BOOL,
"AwareCircumstancesWillChange": BOOL,
"PreviousMember": BOOL,
"HearAboutUs": STRING,
"ReasonForJoining": STRING,
"ContactPost": BOOL,
"ContactEmail": BOOL,
"ContactTelephone": BOOL,
"ContactText": BOOL,
"PromotionCode": STRING,
"AgreeCommunications": BOOL,
}
If the join application request was successful, the API will return HTTP 201 indicating a record has been created along with an object containing the Join Form Id.
Response Object
"Id": NUMBER,
}
External loan applications are also called JoinAndBorrow applications as the user joins the Credit Union and applies for a loan all in one application. When applying for an External Loan Application Abacus API needs to be sent a HTTP POST request with a JoinAndBorrow object.
Request Object
"JsonData": STRING
}
The JSON data is a string that contains a collection of objects. This contains information about the loan application and applicant to be used to make a decision on the approval of the application.
External Loan Application / Join and Borrow JSON Data
"ApplicationType": ApplicationType,
"PersonalDetails": PersonalDetails
"ContactDetails": ContactDetails
"HomeAddress": Address
"PreviousAddress": Address,
"WorkAtAddress": Address,
"BankDetails": BankDetails
"WorkDetails": WorkDetails
"Loan": Loan,
"Expenditure": Expenditure
"Employment": Employment,
"PayrollDeductions": PayrollDeductions,
"BeneficiaryDetails": BeneficiaryDetails
"AdditionalInformation": AdditionalInformation,
"FinancialInformation": FinancialInformation
"HealthDeclaration": HealthDeclaration
"MemberRelationship": MemberRelationship,
"Lottery": Lottery,
"Benefits": List<Benefits>,
"Lenders": List<Lenders>
"CreditCards": List<CreditCards>,
}
{
"TitleId": NUMBER ?,
"FirstName": STRING
"MiddleName": STRING
"Surname": STRING
"GenderId": NUMBER ?
"MaritalStatusId": NUMBER ?
"DateOfBirth": STRING
"SelectedForce": STRING
"SelectedBranchId": NUMBER ?
"SelectedEmployedById": NUMBER ?
"NationalInsuranceNumber": STRING
"DriversLicenseNumber": STRING
"PayrollNumber": STRING
"EmployedBy": STRING
"MainMemberAccountNumber": STRING
"MainMemberRelationship": STRING
"ServiceNumber": STRING
"DependantsAges": STRING
"IncomeTaxCountryId": NUMBER ?
"IdentityNumber": STRING
"EligibilityEmployment": NUMBER ?
"EmploymentStartDate": STRING
"MemberOf": STRING
"EligibilityRetiredEmployment": NUMBER ?
"PensionNumber": STRING
"ExistingMemberName": STRING
"ExistingMemberNumber": STRING
"ForceTypeId": NUMBER ?
"BranchName": STRING
}
{
"FlatAptOfficeNo": STRING,
"HouseBuildingName": STRING,
"HouseBuildingNo": STRING,
"AddressLine1": STRING,
"AddressLine2": STRING,
"City": STRING,
"PostalCode": STRING,
"County": STRING,
"SelectedLivingArrangement": NUMBER,
"YearsAtAddress": NUMBER ?,
"MonthsAtAddress": NUMBER ?,
"PartOfLocalAuthority": BOOL ?,
}
{
"LoanProduct": NUMBER ?,
"LoanAmount": NUMBER ?
"InterestRate": NUMBER ?
"LoanTermMonths": NUMBER ?
"Savings": NUMBER
"RepaymentFrequency": NUMBER
"SelectedPaymentMethod": STRING
"SelectedLoanReason": NUMBER
"Rewarder1": NUMBER
"Rewarder2": NUMBER
"RepaymentAmount": NUMBER
"MaximumTerm": NUMBER
"MaximumAmount": NUMBER
"MinimumTerm": NUMBER
"MinimumBalance": NUMBER
"MaxTermInCalcPeriod": NUMBER
"MaxAPR": NUMBER
}
{
"RentMortgageLodgements": NUMBER ?,
"CreditUnionLodgements": NUMBER ?,
"CouncilTax": NUMBER ?,
"Water": NUMBER ?,
"HomeInsurance": NUMBER ?,
"LifeInsurance": NUMBER ?,
"CarInsurance": NUMBER ?,
"CableSatellite": NUMBER ?,
"Utilities": NUMBER ?,
"TravelFuel": NUMBER ?,
"Telephone": NUNUMBER ?MBER,
"Mobile": NUMBER ?,
"CsaMaintenance": NUMBER ?,
"ChildCare": NUMBER ?,
"Gas": NUMBER ?,
"Electricity": NUMBER ?,
"FoodHousekeeping": NUMBER ?,
"EatingOutTakeAway": NUMBER ?,
"Savings": NUMBER ?,
"Internet": NUMBER ?,
"Clothing": NUMBER ?,
"Catalogues": NUMBER ?,
"StoreCards": NUMBER ?,
"Leisure": NUMBER ?,
"ChildrensActivities": NUMBER ?,
"OtherDebts": NUMBER ?,
"Other": NUMBER ?,
"MortgageMonthlyRepayments": NUMBER ?,
}
{
"DeductionType": NUMBER,
"SetupAutomaticPayrollDeductions": BOOL ?,
"SelectedEmployer": STRING,
"PayrollNumber": STRING,
"DeductionAmount": STRING,
"MonthlyPayDate": NUMBER,
"StartPayrollDeductionsOn": STRING,
"StartPayrollDeductionsDay": NUMBER ?,
"StartPayrollDeductionsMonth": NUMBER ?,
"StartPayrollDeductionsYear": NUMBER ?,
"StartPayrollDeductionsDate": NUMBER ?,
}
{
"EthnicityId": NUMBER,
"RelatedToOfficerOfCreditUnion": BOOL,
"SubjectToCcj": BOOL,
"SubjectToBankruptcyJudgement": BOOL,
"SubjectToIva": BOOL,
"TrustDeedDischarged": DATETIME,
"SubjectToDro": BOOL,
"SubjectToDmp": BOOL,
"SubjectToMortgageLoanArrears": BOOL,
"SubjectToUndischargedBankruptcy": BOOL,
"OnSickLeave": BOOL,
"OnMaternityLeave": BOOL,
"AwareCircumstancesWillChange": BOOL,
"PreviousMember": BOOL,
"HearAboutUs": STRING,
"ReasonForJoining": STRING,
"ContactPost": BOOL,
"ContactEmail": BOOL,
"ContactTelephone": BOOL,
"ContactText": BOOL,
"PromotionCode": STRING,
"AgreeCommunications": BOOL,
}
{
"NetIncomeAfterDeductionsMonthly": NUMBER ?,
"PartnersIncomeAfterDeductionsMonthly": NUMBER ?,
"OtherHouseholdIncomeMonthly": NUMBER ?,
"SourceOfOtherIncome": STRING,
"PropertyValue": NUMBER ?,
"MortgageBalance": NUMBER ?,
"MortgageRemainingYears": NUMBER ?,
"MortgageRemainingMonths": NUMBER ?,
"OtherLivingArrangement": STRING,
"IncomeFrequency": STRING,
"BenefitFrequency": STRING,
}
If the external loan application request was successful, the API will return HTTP 201 indicating a record has been created along with an object containing the Application Id.
Response Object
"Id": NUMBER,
}
When applying for an Internal Loan Application Abacus API needs to be sent a HTTP POST request with an InternalLoanApplication object.
Request Object
"ID": NUMBER ?,
"NewCustomerID": NUMBER ?
"Status": NUMBER ?,
"LoanID": NUMBER ?,
"CustomerID": NUMBER ?
"AccountID": NUMBER ?,
"JsonData": STRING
}
The JSON data is a string that contains a collection of objects. This contains information about the loan application and applicant to be used to make a decision on the approval of the application.
Internal Loan Application JSON Data
"CustomerId": NUMBER,
"PersonalDetails": PersonalDetails
"Loan": Loan,
"Applicant": Applicant,
"HomeAddress": Address
"PreviousAddress": Address,
"BankDetails": BankDetails
"Expenditure": Expenditure
"Employment": Employment,
"PayrollDeductions": PayrollDeductions,
"BeneficiaryDetails": BeneficiaryDetails
"AdditionalInformation": AdditionalInformation,
"FinancialInformation": FinancialInformation
"HealthDeclaration": HealthDeclaration
"MemberRelationship": MemberRelationship,
"Benefits": List<Benefits>,
"Lenders": List<Lenders>
"CreditCards": List<CreditCards>,
}
{
"TitleId": NUMBER ?,
"FirstName": STRING
"MiddleName": STRING
"Surname": STRING
"GenderId": NUMBER ?
"MaritalStatusId": NUMBER ?
"DateOfBirth": STRING
"SelectedForce": STRING
"SelectedBranchId": NUMBER ?
"SelectedEmployedById": NUMBER ?
"NationalInsuranceNumber": STRING
"DriversLicenseNumber": STRING
"PayrollNumber": STRING
"EmployedBy": STRING
"MainMemberAccountNumber": STRING
"MainMemberRelationship": STRING
"ServiceNumber": STRING
"DependantsAges": STRING
"IncomeTaxCountryId": NUMBER ?
"IdentityNumber": STRING
"EligibilityEmployment": NUMBER ?
"EmploymentStartDate": STRING
"MemberOf": STRING
"EligibilityRetiredEmployment": NUMBER ?
"PensionNumber": STRING
"ExistingMemberName": STRING
"ExistingMemberNumber": STRING
"ForceTypeId": NUMBER ?
"BranchName": STRING
}
{
"LoanProduct": NUMBER ?,
"LoanAmount": NUMBER ?
"InterestRate": NUMBER ?
"LoanTermMonths": NUMBER ?
"Savings": NUMBER
"RepaymentFrequency": NUMBER
"SelectedPaymentMethod": STRING
"SelectedLoanReason": NUMBER
"Rewarder1": NUMBER
"Rewarder2": NUMBER
"RepaymentAmount": NUMBER
"MaximumTerm": NUMBER
"MaximumAmount": NUMBER
"MinimumTerm": NUMBER
"MinimumBalance": NUMBER
"MaxTermInCalcPeriod": NUMBER
"MaxAPR": NUMBER
}
{
"FirstName": STRING,
"MiddleName": STRING,
"LastName": STRING,
"AddressLine1": STRING,
"AddressLine2": STRING,
"ApartmentNumber": STRING,
"City": STRING,
"Province": STRING,
"PostalCode": STRING,
"Phone": STRING,
"Mobile": STRING,
"Email": STRING,
"DateOfBirth": STRING,
"CustomerNumber": STRING,
}
{
"RentMortgageLodgements": NUMBER ?,
"CreditUnionLodgements": NUMBER ?,
"CouncilTax": NUMBER ?,
"Water": NUMBER ?,
"HomeInsurance": NUMBER ?,
"LifeInsurance": NUMBER ?,
"CarInsurance": NUMBER ?,
"CableSatellite": NUMBER ?,
"Utilities": NUMBER ?,
"TravelFuel": NUMBER ?,
"Telephone": NUNUMBER ?MBER,
"Mobile": NUMBER ?,
"CsaMaintenance": NUMBER ?,
"ChildCare": NUMBER ?,
"Gas": NUMBER ?,
"Electricity": NUMBER ?,
"FoodHousekeeping": NUMBER ?,
"EatingOutTakeAway": NUMBER ?,
"Savings": NUMBER ?,
"Internet": NUMBER ?,
"Clothing": NUMBER ?,
"Catalogues": NUMBER ?,
"StoreCards": NUMBER ?,
"Leisure": NUMBER ?,
"ChildrensActivities": NUMBER ?,
"OtherDebts": NUMBER ?,
"Other": NUMBER ?,
"MortgageMonthlyRepayments": NUMBER ?,
}
{
"DeductionType": NUMBER,
"SetupAutomaticPayrollDeductions": BOOL ?,
"SelectedEmployer": STRING,
"PayrollNumber": STRING,
"DeductionAmount": STRING,
"MonthlyPayDate": NUMBER,
"StartPayrollDeductionsOn": STRING,
"StartPayrollDeductionsDay": NUMBER ?,
"StartPayrollDeductionsMonth": NUMBER ?,
"StartPayrollDeductionsYear": NUMBER ?,
"StartPayrollDeductionsDate": NUMBER ?,
}
{
"EthnicityId": NUMBER,
"RelatedToOfficerOfCreditUnion": BOOL,
"SubjectToCcj": BOOL,
"SubjectToBankruptcyJudgement": BOOL,
"SubjectToIva": BOOL,
"TrustDeedDischarged": DATETIME,
"SubjectToDro": BOOL,
"SubjectToDmp": BOOL,
"SubjectToMortgageLoanArrears": BOOL,
"SubjectToUndischargedBankruptcy": BOOL,
"OnSickLeave": BOOL,
"OnMaternityLeave": BOOL,
"AwareCircumstancesWillChange": BOOL,
"PreviousMember": BOOL,
"HearAboutUs": STRING,
"ReasonForJoining": STRING,
"ContactPost": BOOL,
"ContactEmail": BOOL,
"ContactTelephone": BOOL,
"ContactText": BOOL,
"PromotionCode": STRING,
"AgreeCommunications": BOOL,
}
{
"NetIncomeAfterDeductionsMonthly": NUMBER ?,
"PartnersIncomeAfterDeductionsMonthly": NUMBER ?,
"OtherHouseholdIncomeMonthly": NUMBER ?,
"SourceOfOtherIncome": STRING,
"PropertyValue": NUMBER ?,
"MortgageBalance": NUMBER ?,
"MortgageRemainingYears": NUMBER ?,
"MortgageRemainingMonths": NUMBER ?,
"OtherLivingArrangement": STRING,
"IncomeFrequency": STRING,
"BenefitFrequency": STRING,
}
If the internal loan application request was successful, the API will return HTTP 201 indicating a record has been created along with an object containing the Application Id.
Response Object
"Id": NUMBER,
}
This allows an authenticated user to change their PIN/Password. When changing the PIN Abacus API needs to be sent a HTTP POST request with a PinUpdate object.
Endpoint
HTTP Request Type
Parameters
Name | Required | Description | Default Value | Example |
---|---|---|---|---|
CurrentPin | User's current PIN. | 123456 | ||
Pin | User's new PIN. | 111111 |
Sample Request
"CurrentPin":"123456"
"Pin":"111111"
}
If the request was a success, the API will return HTTP 204 No Content response.
If a user forgets their PIN/Password they may reset it. This will reset the user's PIN to a random combination of numbers and then send it to the user via an SMS message. When resetting the PIN Abacus API needs to be sent a HTTP POST request with a ForgotPinRequest object
Endpoint
HTTP Request Type
Parameters
Name | Required | Description | Default Value | Example |
---|---|---|---|---|
MemberId | User's ID used to log in. | 123456 | ||
Phone | User's registered UK phone number, which will be sent an SMS. | 07712345678 | ||
DOB | User's date of birth. | 01/31/2000 |
Sample Request
"MemberId":"123456",
"Phone":"07712345678",
"DOB":""01/31/2000"",
}
If the request was a success, the API will return HTTP 204 No Content response. The customer will then recieve an SMS message with their new PIN.
After joining the credit union, a user may register for Members Access. Once registration is complete, they will be sent two random Email and SMS codes which will be used to activate their Members Access. When registering, Abacus API needs to be sent a HTTP POST request with a Register object.
Endpoint
Parameters
Name | Required | Description | Default Value | Example |
---|---|---|---|---|
Forename | User's first name. | Joe | ||
Surname | User's last name. | Bloggs | ||
Customer Number | User's customer number. | 123456 | ||
Phone number | User's mobile phone number. Must be UK format. | 02890123456 | ||
User's email address. | email@myemail.com | |||
DOB | User's date of birth. | 2000-01-31 | ||
CheckDormancy | Specifies whether a user's account should be subject to a dormancy check. | false |
Sample Request
"Forename":"Joe"
"Surname":"Bloggs"
"CustomerNumber":"123456"
"PhoneNumber":"02890123456"
"Email":"email@myemail.com"
"DOB":"2000-01-31"
"CheckDormancy":"false"
}
If the request was a success, the API will return HTTP 201 Created response along with a FormResponse object containing an Id. The customer will then recieve two random activation codes via SMS and Email.
Sample Success Response
"Id":"12345"
}
Failure Responses
Status Code | Description |
---|---|
409 | An account with the supplied email and phone number is already active. |
406 | We could not find your account with the supplied membership number. Ensure that it is correct and try again. |
417 | Your account is dormant. |
422 | The email or telephone number you provided doesn't match our records. |
403 | Customer cannot register with a written off account. |
412 | SMS consent is required. |
An internal transfer represents the transfer of funds from one account to another where the owner of the accounts is the same. When applying for an internal transfer Abacus API needs to be sent a HTTP POST request with a Transfer object.
Endpoint
Object
"CustomerId": "123456",
"Amount": "1.11",
"Reference": "Gas bill"
}3
Parameters
Name | Required | Description | Default Value | Example |
---|---|---|---|---|
CustomerId | Customers unique identfier. | 10010001 | ||
Amount | The amount they would like to transfer. | £20.00 | ||
Reference | Note added to transaction. | Bill Payment |
Sample Request
"CustomerId":"123456"
"Amount":"£50.00"
"Reference":"Bill Payments"
}
If the internal transfer was successful, the API will return HTTP 201 indicating a record has been created along with the internal transfer object.
Sample Response
"ReceiptNumber":"12345"
}
The HTTP post request must contain the AccountIDs of the account that will be transferred from and the account that will be transferred into.
A Withdrawal represents Customers history of withdrawals made from Accounts. A withdrawal involves withdrawing funds from one Abacus API account to an external bank account. As a prerequisite, Abacus API must have the bank account details in the database. When applying for an withdrawal Abacus API needs to be sent a HTTP POST request with a Withdrawal object.
Endpoint
Object
"CustomerId": "123456",
"SavingsAccountId": "123456",
"BankAccountId": "123456",
"Amount": "1.11",
"Reference": "Gas bill"
}
Supported operations
URL | ||
---|---|---|
ALL | /withdrawals/ | |
GET | /withdrawals/{id} | |
SEARCH | /withdrawals?sort={string}&paged={bool}&page={int}&pageSize={int}&ascending={bool} | |
POST | /withdrawals/ | |
PUT | /withdrawals/{id} | |
DELETE | /withdrawals/{id} |
Parameters
Name | Required | Description | Default Value | Example |
---|---|---|---|---|
CustomerId | Customers unique identifier. | 123456 | ||
SavingsAccountId | Savings account unique identifier | 123456 | ||
BankAccountId | Bank account's unique identifier | Bill Payment | ||
Amount | The amount to be withdrawn | £30.00 | ||
Reference | Note added to transaction. | Rent payment |
Sample Request
"CustomerId":"123456"
"SavingsAccountId":"654321"
"BankAccountId":"000000"
"Amount":"£50.00"
"Reference":"Rent Payment"
}
If the withdrawal was successful, the API will return HTTP 201 indicating a record has been created along with the withdrawal object.