Business
Overview
The Business module within the Customer API offers a suite of endpoints tailored to streamline the business creation and verification processes, alongside managing business-related documents efficiently. Here's a brief overview of what each endpoint aims to achieve:
Get Business Creation Parameters: This endpoint provides a list of required parameters and prerequisites needed to initiate the business creation process. It's a preparatory step that ensures businesses have gathered necessary information before submission.
Create Business: Allows for the creation of a new business entity on the Ibanera platform. This endpoint is the starting point for registering a business and requires submission of detailed information such as business name, type, and identifying information.
Get Parameters for Business Verification: Once a business is created, this endpoint is used to retrieve a detailed list of parameters and documents required for verification purposes. Its role is to guide businesses through assembling the necessary documentation and data for verification.
Upload Business Document: Facilitates the upload of business-related documents to the platform. This endpoint is pivotal in submitting the documents necessary for business verification, such as proof of address, incorporation certificates, and more.
Delete Business Document: Offers functionality to remove previously uploaded documents. This endpoint is useful in case of submission errors or when a document update is necessary, thereby maintaining the accuracy and relevancy of submitted documents.
Submit Business Verification: Central to the verification process, this endpoint allows businesses to submit their complete set of verification data along with necessary documents. It's the culmination of the business verification preparation, where all collated information and documentation are officially submitted for review.
Get Verification Status: Provides businesses with the ability to check the status of their verification process. It gives real-time feedback on the review progress, including approved, pending, or required additional information, ensuring businesses are informed about their verification journey.
Each of these endpoints collectively supports businesses in their journey from creation to verification on the Ibanera platform, ensuring a structured and efficient process in becoming a recognized and verified business entity.
Get Business Creation Parameters
This endpoint is designed to retrieve the necessary parameters required for the Create Business endpoint, which is used to register a new business account. This endpoint provides essential data for countries, states, and entity types that are required for the creation of a business account.
Endpoint:
/api/v1/customer/business/createparameters
Method:
GET
Response Body Types:
The response is structured in JSON format and contains the following main elements within the details
object:
countries: An array of country objects with:
id
(integer): Id of country, to be matched withCountriesID
for Statesname
(string): Country NameisoCode
(String): Country ISO Code, 3 letters - ISO 3166-1 alpha-3
states: An array of state objects including
countriesID
(Integer): Id of state’s countryname
(String): Name of stateansiCode
(String): ANSI Code for US states
entityTypes: An array of entity type objects with
id
(Integer): Id of Entity typename
(String): Name of Entity type
Example of a Successful Response:
Possible Error Message Codes:
In cases of failure or invalid requests, the response might return "status": "0"
with a list of errors each containing:
fieldName: Indicates the request item or step that caused the error.
messageCode: A code identifying the specific error.
Create Business
The Create Business endpoint is designed to register a new business account. This POST request requires comprehensive information about both personal and business details, terms and conditions agreements, and an optional invitation send flag.
Endpoint:
/api/v1/customer/business/create
Method:
POST
Request Body Parameters:
personalDetails
(JSON Object, Required): Container for personal information.firstName
(String, Required): First Name.middleNames
(String, Not Required, Nullable): Middle Names.lastName
(String, Required): Last Name.emailAddress
(String, Required): Email Address.phoneNumber
(String, Required): Phone Number, should include country code.reference
(String, Not Required): External reference for the customer.
businessDetails
(JSON Object, Required): Container for business information.companyName
(String, Required): Company Name, with a min length of 2 and max length of 200.phoneNumber
(String, Required): Company Phone Number.countryISOCode
(ISO 3166-1 alpha-3, Required): Country ISO Code.taxNumber
(String, Required): Company Tax Number.entityTypesID
(String, Required): Identifier for the Entity type (e.g., LLC, PLC).state
(String, Required): State or Province, use ISO 3166-2:US code for USA.townCity
(String, Required): Town or City.addressLine1
(String, Required): Address line 1.addressLine2
(String, Not Required, Nullable): Address line 2.postCode
(String, Required): Postcode/ZIP code.registrationDate
(DateTime, Required): Company registration date in 'yyyy-mm-dd' format.registrationNumber
(String, Required): Company Registration Number.website
(String, Not Required): Company website.
termsAndConditions
(JSON Object, Required): Container for Terms and Conditions details.bIRSTaxFilingAgreement
(Boolean, Required): Agreement with IRS tax filing compliance.bFATCAAgreement
(Boolean, Required): Agreement with FATCA compliance.
sendInvite
(Boolean, Required): Flag to send an email invite to the user to login via the User Interface. Set tofalse
by default.
Request Body Example JSON:
Response Body Types:
On successful creation, the response will contain:
id
(Integer): A numeric ID representing the operation.details
(JSON Object): IncludescustomersId
andcustomerUsersCustomersID
, identifying the created business and the user associated with it.status
(String): "1" indicates a successful operation.errors
(JSON Array): Empty for successful operations.
Example of a Successful Response:
Possible Error Message Codes:
Similar to other endpoints, in case of failure, an error object will be included with:
fieldName: Field related to the error.
messageCode: Specific error code.
Error Message Code | Description |
---|---|
Required | Named field missing, null or empty |
Invalid_PhoneNumber | Minimum length is six digits. Invalid format. Example supported formats: +12345678910 12345678910 +1(234)567-8910 +1 (234) 567-8910 +1 2345678910 |
Invalid_CountryISOCode | ISO code not recognised |
Invalid_TaxNumber | Only digits 0-9 allowed. Length is nine digits. |
Invalid_EntityTypesID | Entity type not recognised |
Invalid_State | Use 2 letter state codes for USA |
Invalid_RegistrationDate | Format should be ‘yyyy-mm-dd’ |
Username_Not_Available | Email address is already in use |
Invalid_CurrencyCode | Currency Code not found/available |
Invalid_bIRSTaxFilingAgreement | Customer must agree to IRS Tax Filing Agreement |
Invalid_bFATCAAgreement | Customer must agree to FATCA Agreement |
Get Parameters for Business Verification
This endpoint is designed to assist in collecting the necessary parameters for submitting business verification data through the Submit Verification endpoint. By making a GET request to this endpoint, developers and users can retrieve lists of countries, states, document types, and other essential verification-related parameters.
Endpoint:
/api/v1/customer/business/verificationparameters
Method:
GET
Request Parameters
customersId
(Integer, Required): The ID of the customer whose verification parameters are to be retrieved.
Response Body Types
The response consists of several arrays that include:
countries
(JSON Array): Contains objects with necessary details for countries, including:id
(Integer): ID of the country.countryName
(String): Name of the country.isoCode
(ISO 3166-1 alpha-3 String): 3-letter country ISO code.
states
(JSON Array): Contains objects with state-specific information:countriesID
(Integer): ID of the state’s country.name
(String): Name of the state.ansiCode
(String): ANSI code for US states and equivalent for others.
businessIdentityDocumentTypes
,politicallyExposedPersonTypes
,mainActivityTypes
,sourceFundTypes
(JSON Arrays): Lists identification, politically exposed persons, main business activities, and source of funds types required for verification.id
(Integer): Identifier for the type.name
(String): Name of the type.
documents
(JSON Array): Contains objects with necessary details for document upload, including:bRequired
(Bool): True if required for verificationDocumentTypesId
(Integer): Id of Document TypeDocumentNotes
(String): Description of document typeDocumentStatus
(String): Status of Customer's document:Not Submitted
Checking
Approved
Expired
Rejected
Filename
(String): Filename of uploaded documentName
(String): Name of document type
AdditionalDocuments
(JSON Array): Contains objects with additional supporting documents for document upload, including:bRequired
(Bool): True if required for verificationDocumentTypesId
(Integer): Id of Document TypeDocumentNotes
(String): Description of document typeDocumentStatus
(String): Status of Customer's document:Not Submitted
Checking
Approved
Expired
Rejected
Filename
(String): Filename of uploaded documentName
(String): Name of document type
Upload Business Document
The Upload Business Document endpoint allows businesses to upload documents that are necessary for the verification process of the business account. This endpoint plays a crucial role in fulfilling the document submission requirements for account verification, including proofs of address, identity, operational licenses, and other significant documentation.
Endpoint:
/api/v1/customer/business/uploaddocument
Method:
POST
Content-Type:
multipart/form-data
This endpoint requires the 'Content-Type' to be set to 'multipart/form-data' due to the file upload requirement.
Form Parameters
customersId
(Integer): The ID of the business customer for whom the document is being uploaded. This identifier ensures that the document is associated with the correct account.bAdditionalDocument
(Boolean): A flag to indicate if the document being uploaded is an additional document not explicitly required but submitted to aid in the verification process. This can be useful for providing extra evidence to expedite verification.documentId
(Integer): The ID referencing the type of document being uploaded, as defined by the verification parameters provided by the/verificationparameters
endpoint.file
(File): The document file to be uploaded. The request should use multipart file upload to include the actual document file.note
(String, Optional): Any additional notes or comments that should accompany the document being uploaded. This can provide context or additional information relevant to the document.
Response Format
application/json: The response data is provided in JSON format.
Success Response Example
This response indicates that the document upload was successful, with "status": "1"
denoting a successful operation and an empty "errors"
array signifying no errors occurred during the process.
Error Message Code | Description |
---|---|
Required | Named field missing, null or empty |
Unauthorized | User is not permitted to edit Customer’s files |
Invalid_FileName | File not found |
Invalid_DocumentTypesID | Valid document types available at /api/v1/customer/business/verificationparameters |
Submit Business Verification
The Submit Business Verification endpoint is designed for submitting the comprehensive verification details of a business customer. This involves critical information relating to the company's representative, main business activities, capital, investments, and anticipated activity, among others. This information is crucial for the completion of the business verification process.
Endpoint:
/api/v1/customer/business/submitverification
Method:
POST
Request Body Parameters:
customersID
(Integer): Id of the managed business accountsignificantParties
(JSON Array, all elements are required): Contains objects with necessary details for Significant Parties - all beneficial owners and/or control persons.number
(Integer): Significant Party number. Should be numbered 1 to N, where N is the number of significant parties in totalfirstName
(String): First namelastName
(String): Last nametitle
(String): Title of individualdateOfBirth
(Date): Date of Birth in format ‘yyyy-mm-dd’.nationality
(String, Country ISO Code, 3 letters - ISO 3166-1 alpha-3): Nationality countryemail
(String): Individual's email addressphoneNumber
(String): Phone number, must include country codecountry
(String, Country ISO Code, 3 letters - ISO 3166-1 alpha-3): Country of individual's current citizenshipssn
(String): SSN/ Tax Id NumberstateProvince
(String, For USA, use ISO 3166-2:US code. E.g. US-FL): State or Provincecity
(String)addressLine1
(String): Address Line 1addressLine2
(String, Optional): Address Line 2postcode
(String): Postcode or ZIP codepercentageSharesOwned
(String): Percentage Shares Ownedposition
(String): Individual's position in the companybControllingParty
(Bool): True if the individual is the controlling partyproofOfAddressFileName
(String): Proof of address filename. File should be uploaded via uploaddocument, using documentId matching ‘Significant Parties Proof of Address’.
corporate
(JSON Object): Corporate application formoperatingAddress
(JSON Object): Information about the company's operating address.bUseDifferentAddress
(Bool): True if company’s operating address is different to registered address. If true, the following items are required.addressLine1
(String): Address Line 1addressLine2
(String, Optional): Address Line 2city
(String): City of the operating addresscountry
(String, Country ISO Code, 3 letters - ISO 3166-1 alpha-3): Country of the operating addresspostcode
(String): Postcode or ZIP code of the operating addressstateProvince
(String, For USA use ISO 3166-2:US code. E.g. US-FL): State or Province of the operating address
representative
(JSON Object, Required): Information about the company's representative.firstName
(String, Required): First name of the representativelastName
(String, Required): Last name of the representativessn
(String, Optional, Required): SSN/ Tax ID Number of the representativedateOfBirth
(Date, Required): Date of Birth in format ‘yyyy-mm-dd’addressLine1
(String, Required): Address Line 1addressLine2
(String, Optional): Address Line 2city
(String, Required): City of the operating addresscountry
(String, Country ISO Code, 3 letters - ISO 3166-1 alpha-3, Required): Country of the operating addresspostcode
(String, Required): Postcode or ZIP code of the operating addressstateProvince
(String, For USA use ISO 3166-2:US code. E.g. US-FL, Required): State or Province of the operating addressposition
(String, Required): Position of the representativeemail
(String, Required): Email address of the representativephoneNumber
(String, Required): Phone number of the representative, must include country codepersonalIdDocumentTypesID
(String, Required): Personal Id Document Type IdpoliticallyExposedPersonTypesID
(String, Optional): Politically Exposed Person Type. Leave blank/removed if not relevant.personalIdDocument
(JSON Object): Information regarding personal identification document of the representative.idNumber
(Integer, Required): The ID number of the document (e.g. passport number)dateOfIssue
(Date, Required): Date of issue. Format ‘yyyy-mm-dd’.placeOfIssue
(String, Required): Place of issueexpiryDate
(Date, Required): Expiry date of document. Format ‘yyyy-mm-dd’.
politicallyExposedPerson
(JSON Object): Indicates if the representative is a politically exposed person. Required ifpoliticallyExposedPersonTypesID
is not nullfirstName
(String): First name. Required unless politically exposed person type is nulllastName
(String): Last name. Required unless politically exposed person type is nullstateInstitution
(String): State or Institution. Required unless politically exposed person type is nullposition
(String): Company Position. Required unless politically exposed person type is null
mainBusinessPartners
(JSON Array)number
(Integer, Required): Main business partners number. Should be numbered 1 to N, where N is the number of main business partnersname
(String, Required): Full namecompanyRegistrationNumber
(String, Required): Company Registration Numberwebsite
(String, Optional): Website URL
mainActivity
(JSON Object)typesID
(String, Required): Main Activity TypeDescription
(String, Required)bFundsReceivedUSA
(Bool, Required): Are funds received from USA?bFundsSentUSA
(Bool, Required): Are funds to be sent to USA?bPassiveIncomeExceedsFiftyPercent
(Bool, Required): Does the passive income of the entity or assets generating or kept to generate the income exceed 50% of the entity’s gross income per calendar year or its total assets.
authorizedCapital
(JSON Object)authorizedCapital
(Decimal, Required): Authorized CapitalsourceOfFunds
(String, Required): Source of fundsproofOfSourceOfFundsFileName
(String, Required)previousYearTurnover
(Decimal, Required)plannedTurnover
(Decimal, Required)bankAccountSignatories
(String, Required)sourceFundsInformationTypesID
(Integer, Required)supportingDocuments
(JSON Array):number
(Integer, Required): Number of supporting document. Numbering should begin at 1 and be consecutivefileName
(String): Filename of supporting document
externalInvestment
(JSON Object): All sub objects required if any is not null or empty.companyName
(String): Name of external investment companycompanyAddress
(String): Address of external investment companyamount
(Decimal): Amount of external investmentdate
(Date): Date of investment. Format 'yyyy-mm-dd'
internalInvestments
(JSON Array): All sub objects required if any is not null or emptynumber
(Integer): Number of internal investment. Numbering should begin at 1 and be consecutive.employeeName
(String): Employee's nameposition
(String): Employee's positionamount
(Decimal): Amount Investeddate
(Date): Date of investment. Format: 'yyyy-mm-dd'sourceOfWealth
(String): Source of wealth
companySale
(JSON Object): All sub objects required if any is not null or empty.companyName
(String): Name of company soldcountry
(String, ISO 3166-1 alpha-3): Country of Incorporation. Country ISO Code, 3 letterscompanyAddress
(String):Address of company soldnatureOfBusiness
(String): Nature of sold company's businessamount
(Decimal): Amount of the saledate
(Date): Date of company sale. Format: 'yyyy-mm-dd'
inheritance
(JSON Object): All sub objects required if any is not null or empty.nameRelationshipDonor
(String): Name and relationship to Donordate
(Date): Format 'yyyy-mm-dd'amount
(Decimal): Amount received
propertySale
(JSON Object): All sub objects required if any is not null or empty.address
(Decimal): Address of property solddate
(Date): Date of property sale. Format 'yyyy-mm-dd'amount
(Decimal): Amount of property sale
loan
(JSON Object): All sub objects required if any is not null or empty.amount
(Decimal): Amount of loandate
(Date): Date of property sale. Format 'yyyy-mm-dd'lenderNameAddress
(String): Name / Address of lenderPurpose
(String): Purpose of loan
other
(JSON Object): All sub objects required if any is not null or emptyamount
(Decimal): Amount receiveddate
(Date): Date received. Format 'yyyy-mm-dd'natureOfIncome
(String): Nature of incomepayee
(String): Payee
otherAccounts
(JSON Array): Other bank accounts. All sub objects required if any is not null or empty.number
(Integer): Number of account. Numbering should begin at 1 and be consecutive.accountName
(String): Name of account
anticipatedActivity
(JSON Object, Required): Anticipated financial activity (amounts in USD)monthlyTurnOver
(Decimal, Required): Monthly turnoverMonthsActivities
(Decimal, Required): Anticipated transactional activity for next 12 monthsellingCryptoMonthlyVolume
(Decimal, Required): Monthly volume of selling cryptocurrency (in USD)sellingCryptoAverageAmount
(Decimal, Required): Average order size for selling cryptocurrency (in USD)sellingCryptoTotalAmountPerMonth
(Decimal, Required): Total amount of sold cryptocurrency per monthpurchaseCryptoMonthlyVolume
(Decimal, Required): Monthly volume of purchasing cryptocurrency (in USD)cryptoToCryptoAverageAmount (Decimal, Required): Average crypto to crypto order size (in USD)
cryptoToCryptoTotalAmountPerMonth (Decimal, Required): Total crypto to crypto amount (in USD)
totalMonthlyVolume (Decimal, Required) Total for all monthly volume - Sum of
sellingCryptoMonthlyVolume
andpurchaseCryptoMonthlyVolume
btcTradingPercentage (Decimal, Required): Percentage of anticipated activity trading Bitcoin
ethTradingPercentage (Decimal, Required): Percentage of anticipated activity trading Ethereum
usdcTradingPercentage (Decimal, Required): Percentage of anticipated activity trading USD Coin
otherCoinsTradingPercentage (Decimal, Required): Percentage of anticipated activity trading other cryptocurrencies
NOTE: Trading Percentages above must total to 100
documentsUpload
(JSON Array): Document UploadDocumentTypesID
(Integer, Required)FileName
(String, Required): Name of file
confirmation
(JSON Object): Customer's confirmationbAcceptTerms (Boolean, Required): Indicates whether terms and conditions have been accepted.
bConfirm (Boolean, Required): Confirmation that the information provided is accurate and true.
Submit Business Verification Request Body JSON Example
Response Body Parameters
status
(Integer): 1 if success, 0 if failureerrors
(Array): List of errors (if present)details
(JSON Object)customersId
(Integer): Customer Id of the new businessbusinessVerificationStep
(String): State of business verification: Not Started, In Progress, Submitted, Verified
Response Body JSON Example
Potential Error Codes
Error Code Message | Description |
---|---|
Required | Required field not provided |
Invalid_SignificantParties_Numbering | Numbers should be distinct and consecutive starting at 1 |
Invalid_SignificantParties_Country_[[Number]] | Country not found for significant party number [[Number]] |
Invalid_SignificantParties_Nationality_[[Number]] | Nationality not found |
Invalid_SignificantParties_StateProvince_[[Number]] | State not found |
Invalid_SignificantParties_PercentageSharesOwned_[[Number]] | PercentageSharesOwned must be between 0 and 100 |
Invalid_SignificantParties_PercentageSharesOwned | Total PercentageSharesOwned sum must not exceed 100 |
Invalid_SignificantParties_ProofOfAddressFileName_[[Number]] | File not found |
Invalid_OperatingAddress_Country | Country not found |
Invalid_OperatingAddress_StateProvince | State not found |
Representative_Country | Country not found |
Invalid_Representative_StateProvince | State not found |
Invalid_Representative_PersonalIdentificationDocumentTypesID | Type not found |
Invalid_Representative_PoliticallyExposedPersonTypesID | Type not found |
Invalid_MainBusinessPartners_Number | Numbers should be distinct and consecutive starting at 1 |
Invalid_MainActivity_TypesID | Type not found |
Invalid_AuthorizedCapital_AuthorizedCapital | Amount cannot be negative |
Invalid_AuthorizedCapital_SourceFundsInformationTypesID | Type not found |
Invalid_AuthorizedCapital_ExternalInvestment_Amount | Amount cannot be negative |
Invalid_AuthorizedCapital_InternalInvestment_Number | Numbers should be distinct and consecutive starting at 1 |
Invalid_AuthorizedCapital_InternalInvestment_Amount_[[Number]] | Amount cannot be negative |
Invalid_AuthorizedCapital_CompanySale_Amount | Amount cannot be negative |
Invalid_AuthorizedCapital_Inheritance_Amount | Amount cannot be negative |
Invalid_AuthorizedCapital_PropertySale_Amount | Amount cannot be negative |
Invalid_AuthorizedCapital_Loan_Amount | Amount cannot be negative |
Invalid_AuthorizedCapital_Other_Amount | Amount cannot be negative |
Invalid_AuthorizedCapital_SupportingDocuments_Number | Numbers should be distinct and consecutive starting at 1 |
Invalid_AuthorizedCapital_SupportingDocuments_FileName_[[Number]] | File not found |
Invalid_OtherAccounts_Number | Numbers should be distinct and consecutive starting at 1 |
Invalid_AnticipatedActivity_[[FieldName]] | Percentages must be between 0 and 100. Possible field names: BTCTradingPercentage, ETHTradingPercentage, USDCTradingPercentage, OtherCoinsTradingPercentage |
Invalid_OtherAccounts_Percentages | Sum of percentages must not exceed 100 |
Invalid_DocumentUpload_DocumentTypesID | Only one file per document type is allowed |
Invalid_DocumentUpload_FileNames | Files must be distinct |
Invalid_DocumentUpload_DocumentTypesID_[[DocumentTypesID]] | Type not found |
Invalid_DocumentUpload_FileName_[[DocumentTypesID]] | File with document type [[DocumentTypesID]] not found |
Invalid_Confirmation_bConfirm | Customer must confirm |
Invalid_Confirmation_bAcceptTerms | Customer must accept terms |
Get Business Verification Status
The Get Business Verification Status endpoint of the Customer API retrieves the current verification status of a business customer.
Endpoint Description
Endpoint:
/api/v1/customer/businesses/getverificationstatus
Method:
GET
Query Parameters:
customersId
(Integer): Identifier of the managed business customer. This parameter is required.
Response Body Types
status (Integer): Indicates the operation's success (
1
) or failure (0
).errors (String array): List of errors if the operation fails.
details (Object):
businessVerificationStep (String): The current verification step such as
Not Started
,In Progress
,Submitted
,Verified
.documents (Array): Details about documents uploaded.
fileName (String): Name of the file.
bUploaded (Bool): True if the document is uploaded.
bRejected (Bool): True if the document is rejected.
bVerified (Bool): True if the document is verified.
documentStatus (String): Status of the document e.g.,
Not Submitted
,Checking
,Approved
.uploadNotes (String): Notes associated with the document upload.
documentId (Integer): Identifier of the Document Type.
rejectionReason (String): Reason for document rejection, if any.
additionalDocuments (Array): Similar structure to
documents
for additional documents submitted.
Example of a Successful Response
Possible Error Message Codes
Unauthorized: The user is not permitted to use the endpoint.
Required: Named field missing, null or empty
Invalid_CustomersId: The
customersId
parameter is invalid.Business_Account_Not_Found: No business account found for the given
customersId
.
Delete Business Document
This section documents the Delete Business Document
endpoint of the Customer API, used for removing a verification document associated with a business customer.
Endpoint Description
Endpoint:
/api/v1/customer/business/deletedocument
Method:
POST
Content-Type:
application/json
Request Body Parameters
customersId (Integer): Identifier of the managed business customer. This parameter is required.
documentId (Integer): Identifier of the document to be deleted. This parameter is required.
filename (String): Name of the file to delete. This parameter is required.
bAdditionalDocument (Bool): Indicates whether the document is listed in the additional documents list in
verificationparameters
response. This parameter is required.
Request Body Example
Success Response Body Types
status (Integer): Indicates the operation's success (
1
) or failure (0
).errors (String array): List of errors if the operation fails.
details (Object):
bSuccess (Bool): True if the document was successfully deleted.
Example of a Successful Response
Possible Error Message Codes
Unauthorized: The user is not permitted to use the endpoint.
Required: Named field missing, null or empty
Invalid_FileName: Indicated an issue with the file name provided.
Invalid_DocumentTypesID: The
documentId
provided is not valid.Invalid_FileSize: The file size exceeds the maximum limit allowed.
Last updated