Corporate entity onboarding
The Wallet & Payments platform is built as a completely independent, self-manageable application. All user groups (Programme managers, or corporate staffs or Individual users), have the ability to register, manage, and operate their respective accounts with minimal assistance from others.
However, in some cases, the programme manager staffs may manage, monitor and operate corporate customers’ accounts, by entering payment transactions, and generally managing accounts.
The platform gives the flexibility to achieve the same by following the following sequence of steps.
- Create a corporate entity.
- Add Corporate details.
- Upload KYB documents (we will provide access to the UI portal).
- Create a primary user (Corporate admin) for the newly created corporate entity.
- Create IBAN account requests for the corporate entity (the IBAN will be issued after the corporate entity is fully onboarded).
- Perform daily operations on the corporate-related accounts.
Step 1: Create a corporate entity
/CreateCorporateEntity
import requests
import json
url = “https://stageapi.cfsemoney.com/v1/CreateCorporateEntity”
payload = json.dumps({
“companyName”: “API Out payload”,
“companyEmail”: “m8qZ4t47####@mailinator.com”,
“tradingName”: “xxxxx”,
“tinNumber”: “1234567890”,
“regNumber”: “1234567890”,
“phoneNumber”: “+448090392325”,
“country”: “United Kingdom”,
“companyUrl”: “http://www.company.com”,
“whiteLabel”: “v2wallet.zippcard.net”
})
headers = {
‘x-api-key’: ‘YOUR-API-KEY‘,
‘Authorization’: ‘Bearer <<bearer-token>>‘,
‘Content-Type’: ‘application/json’
}
response = requests.request(“POST”, url, headers=headers, data=payload)
print(response.text)
curl –location –request POST ‘https://api.cfsemoney.com/v1/CreateCorporateEntity’ \
–header ‘x-api-key: ZZZZZZZZZZZZZZZZXnO41ZsQjeiD0zaeYFPp1d‘\ <<<<Sample value>>>>
–header ‘Authorization: Bearer <<YOUR-SESSION-TOKEN>>‘ \
–header ‘Content-Type: application/json’ \
–data-raw ‘{
“companyName”: “API Out payload”,
“companyEmail”: “m8qZ4t47XXXX@EMAIL.com”,
“tradingName”: “xxxxx”,
“tinNumber”: “1234567890”,
“regNumber”: “1234567890”,
“phoneNumber”: “+448090392325”,
“country”: “United Kingdom”,
“companyUrl”: “http://www.company.com”,
“whiteLabel”: “wallet.ZIPPO.NET”,
“entityType”: “corporate”
}’
{“$schema”: “http://json-schema.org/draft-04/schema#”,
“title”: “User”,
“type”: “object”,
“properties”: {
“companyName”: {“type”: “string”,”minLength”: 2,”maxLength”:50},
“companyEmail”: {“type”: “string”,”format”: “email”},
“tradingName”: {“type”: “string”,”minLength”: 2,”maxLength”:50},
“tinNumber”: {“type”: “string”,”minLength”: 2,”maxLength”:15},
“regNumber”: {“type”: “string”,”minLength”: 2,”maxLength”:15},
“phoneNumber”: {“type”: “string”,”minLength”: 7,”maxLength”:15},
“country”: {“type”: “string”,”minLength”: 2,”maxLength”:50},
“companyUrl”: {“type”: “string”,”format”: “uri-template”},
“whiteLabel”: {“type”: “string”,”minLength”: 2,”maxLength”:100,”format”: “uri-template”},
“entityType”: {“type”: “string”,”minLength”: 2,”maxLength”:15, “enum”:[“corporate”]}
},”required”: [“companyName”, “companyEmail”,”tradingName”,”regNumber”,”phoneNumber”,”country”,”whiteLabel”,”entityType”] }
{
“statusCode”: 200,
“body”: “{\”message\”: \”Account successfully created.\”, \”data\”: {\”companyName\”: \”Swapnil Zipp API Corp 02\”,
\”companyEmail\”: \”info@zipp2.com\”, \”tradingName\”: \”Swapnil Zipp API Corp 02\”, \”regNumber\”: \”D-638258\”,
\”phoneNumber\”: \”442085614250\”, \”country\”: \”United Kingdom\”, \”whiteLabel\”: \”v2wallet.zippcard.net\”,
\”entityType\”: \”corporate\”, \”entityDetail\”: {\”companyName\”: \”Swapnil Zipp API Corp 02\”,
\”companyEmail\”: \”info@zipp2.com\”, \”tradingName\”: \”Swapnil Zipp API Corp 02\”, \”regNumber\”: \”D-638258\”,
\”phoneNumber\”: \”442085614250\”, \”country\”: \”United Kingdom\”, \”whiteLabel\”: \”v2wallet.zippcard.net\”,
\”entityType\”: \”corporate\”, \”entityInfo\”: {\”companyName\”: \”Swapnil Zipp API Corp 02\”, \”companyEmail\”: \”info@zipp2.com\”,
\”tradingName\”: \”Swapnil Zipp API Corp 02\”, \”regNumber\”: \”D-638258\”, \”phoneNumber\”: \”442085614250\”,
\”country\”: \”United Kingdom\”, \”whiteLabel\”: \”v2wallet.zippcard.net\”, \”entityType\”: \”corporate\”,
\”parentOrg\”: \”Zippcard.Net\”}, \”parentOrg\”: \”Zippcard.Net\”}, \”parentId\”: 1283, \”ownerCompany\”: 1,
\”programmeManager\”: 1283, \”subprogrammeManager\”: null, \”corporate\”: 68353, \”registeredCompanyName\”: \”Zippcard.Net\”,
\”companyType\”: \”corporate\”, \”onboarding_status\”: \”incomplete\”, \”kyb_status\”: \”kyb upload pending\”,
\”created_on\”: \”2023-10-03\”, \”entity_id\”: 68353, \”groupName\”: \”68353\”}}”
}
{
“statusCode”: 400,
“body”: “{\”message\”: \”xxx”}”
}
Step 2: Add Corporate Details
/AddCorporateDetails
import requests
import json
url = “https://stageapi.cfsemoney.com/v1/AddCorporateDetails“
payload = json.dumps({
“entityDetail”: {
“country”: “”,
“regNumber”: “”,
“tinNumber”: “”,
“companyUrl”: “”,
“companyName”: “”,
“phoneNumber”: “”,
“tradingName”: “”,
“companyEmail”: “”,
“address”: {
“registrationAddress”: {
“regAddress1”: “”,
“regAddress2”: “”,
“regCountry”: “”,
“regState”: “”,
“regPostCode”: “”,
“regCity”: “”
},
“businessAddress”: {
“businessAddress1”: “”,
“businessAddress2”: “”,
“businessCountry”: “”,
“businessState”: “”,
“businessPostCode”: “”,
“businessCity”: “”
}
},
“additionalInfo”: {
“companyStatus”: “”,
“businessSectors”: [
“Sales & Marketing”
],
“leiNumber”: “API2LEINumber”,
“vatNumber”: “API2Vat”,
“frnNumber”: “API2FRN”
},
“shareholders”: [
{
“uuid”: “”,
“shareholderType”: “”,
“firstName”: “”,
“middleName”: “”,
“lastName”: “”,
“officePhone”: “”,
“mobilePhone”: “”,
“dateOfBirth”: “”,
“country”: “”,
“postCode”: “”,
“state”: “”,
“city”: “”,
“percentage”: “”,
“address1”: “”,
“address2”: “”
}
],
“directors”: [
{
“uuid”: “”,
“directorType”: “”,
“registeredName”: “”,
“registrationNumber”: “”,
“firstName”: “”,
“middleName”: “”,
“lastName”: “”,
“email”: “”,
“officePhone”: “”,
“mobilePhone”: “”,
“dateOfBirth”: “”,
“country”: “”,
“postCode”: “”,
“state”: “”,
“city”: “”,
“address1”: “”,
“address2”: “”,
“contactPerson”: {
“firstName”: “”,
“middleName”: “”,
“lastName”: “”
}
}
]
},
“entityId”: <<entityId>>
})
headers = {
‘x-api-key’: ‘<<API KEY>>’,
‘Authorization’: ‘Bearer <<TOKEN VALUE>>’,
‘Content-Type’: ‘application/json’
}
response = requests.request(“POST”, url, headers=headers, data=payload)
print(response.text)
curl –location ‘https://stageapi.cfsemoney.com/v1/AddCorporateDetails’ \
–header ‘<<API KEY>>’ \
–header ‘Authorization: Bearer <<TOKEN VALUE>>’ \
–header ‘Content-Type: application/json’ \
–data-raw ‘{
“entityDetail”: {
“country”: “”,
“regNumber”: “”,
“tinNumber”: “”,
“companyUrl”: “”,
“companyName”: “”,
“phoneNumber”: “”,
“tradingName”: “”,
“companyEmail”: “”,
“address”: {
“registrationAddress”: {
“regAddress1”: “”,
“regAddress2”: “”,
“regCountry”: “”,
“regState”: “”,
“regPostCode”: “”,
“regCity”: “”
},
“businessAddress”: {
“businessAddress1”: “”,
“businessAddress2”: “”,
“businessCountry”: “”,
“businessState”: “”,
“businessPostCode”: “”,
“businessCity”: “”
}
},
“additionalInfo”: {
“companyStatus”: “”,
“businessSectors”: [
“”
],
“leiNumber”: “”,
“vatNumber”: “”,
“frnNumber”: “”
},
“shareholders”: [
{
“uuid”: “”,
“shareholderType”: “”,
“firstName”: “”,
“middleName”: “”,
“lastName”: “User”,
“officePhone”: “”,
“mobilePhone”: “”,
“dateOfBirth”: “”,
“country”: “”,
“postCode”: “”,
“state”: “”,
“city”: “”,
“percentage”: “”,
“address1”: “”,
“address2”: “”,
“email”:””,
}
],
“directors”: [
{
“uuid”: “”,
“directorType”: “”,
“registeredName”: “”,
“registrationNumber”: “”,
“firstName”: “”,
“middleName”: “”,
“lastName”: “”,
“email”: “”,
“officePhone”: “”,
“mobilePhone”: “”,
“dateOfBirth”: “”,
“country”: “”,
“postCode”: “”,
“state”: “”,
“city”: “”,
“address1”: “”,
“address2”: “”,
“contactPerson”: {
“firstName”: “”,
“middleName”: “”,
“lastName”: “”
}
}
]
},
“entityId”:
}’
{
“$schema”: “http://json-schema.org/draft-04/schema#”,
“title”: “User”,
“type”: “object”,
“properties”: {
“currentProfile”: {“type”: “string”},
“entityId”: {“type”: “number”},
“entityDetail”: {
“type”: “object”,
“properties”: {
“country”: {
“type”: “string”,
“enum”: [
“Chad”, “Estonia”, “Ethiopia”, “Falkland Islands (Malvinas)”, “Faroe Islands”, “Fiji”, “Finland”, “France”, “French Guiana”, “French Polynesia”, “French Southern Territories”, “Gabon”, “Gambia”, “Georgia”, “Germany”, “Ghana”, “Gibraltar”, “Greece”, “Greenland”, “Grenada”, “Guadeloupe”, “Guam”, “Guatemala”, “Guernsey”, “Guinea”, “Guinea-Bissau”, “Guyana”, “Haiti”, “Heard and Mcdonald Islands”, “Holy See (Vatican City State)”, “Honduras”, “Hungary”, “Iceland”, “India”, “Indonesia”, “Iran, Islamic Republic of”, “Iraq”, “Ireland”, “Isle of Man”, “Israel”, “Italy”, “Ivory Coast”, “Jamaica”, “Japan”, “Jersey”, “Jordan”, “Kazakhstan”, “Kenya”, “Kiribati”, “North Korea”, “South Korea”, “Kuwait”, “Kyrgyzstan”, “Lao PDR”, “Latvia”, “Lebanon”, “Lesotho”, “Liberia”, “Libya”, “Liechtenstein”, “Lithuania”, “Luxembourg”, “Macedonia, Republic of”, “Madagascar”, “Malawi”, “Malaysia”, “Maldives”, “Mali”, “Malta”, “Marshall Islands”, “Martinique”, “Mauritania”, “Mauritius”, “Mayotte”, “Mexico”, “Micronesia, Federated States of”, “Moldova”, “Monaco”, “Mongolia”, “Montenegro”, “Montserrat”, “Morocco”, “Mozambique”, “Myanmar”, “Namibia”, “Nauru”, “Nepal”, “Netherlands”, “Netherlands Antilles”, “New Caledonia”, “New Zealand”, “Cape Verde”, “Cayman Islands”, “Central African Republic”, “Chile”, “China”, “Hong Kong, SAR China”, “Macao, SAR China”, “Christmas Island”, “Cocos (Keeling) Islands”, “Colombia”, “Comoros”, “Congo (Brazzaville)”, “Congo, (Kinshasa)”, “Cook Islands”, “Costa Rica”, “Croatia”, “Cuba”, “Cyprus”, “Czech Republic”, “Denmark”, “Djibouti”, “Dominica”, “Dominican Republic”, “Ecuador”, “Egypt”, “El Salvador”, “Equatorial Guinea”, “Eritrea”, “Nicaragua”, “Niger”, “Nigeria”, “Niue”, “Afghanistan”, “Aland Islands”, “Albania”, “Algeria”, “Burkina Faso”, “Burundi”, “Cambodia”, “Cameroon”, “Canada”, “Norfolk Island”, “Northern Mariana Islands”, “Norway”, “Oman”, “Sri Lanka”, “Sudan”, “Suriname”, “Svalbard and Jan Mayen Islands”, “Swaziland”, “Sweden”, “Switzerland”, “Syria”, “Taiwan, Republic of China”, “Tajikistan”, “Tanzania, United Republic of”, “Thailand”, “Timor-Leste”, “Togo”, “Tokelau”, “American Samoa”, “Andorra”, “Angola”, “Anguilla”, “Antarctica”, “Antigua and Barbuda”, “Argentina”, “Armenia”, “Aruba”, “Australia”, “Austria”, “Azerbaijan”, “Bahamas”, “Bahrain”, “Bangladesh”, “Barbados”, “Belarus”, “Belgium”, “Belize”, “Benin”, “Bermuda”, “Bhutan”, “Bolivia”, “Bosnia and Herzegovina”, “Botswana”, “Bouvet Island”, “Brazil”, “British Virgin Islands”, “British Indian Ocean Territory”, “Brunei Darussalam”, “Bulgaria”, “Tonga”, “Trinidad and Tobago”, “Tunisia”, “Turkey”, “Turkmenistan”, “Turks and Caicos Islands”, “Tuvalu”, “Uganda”, “Peru”, “Ukraine”, “United Arab Emirates”, “United States of America”, “US Minor Outlying Islands”, “Uruguay”, “Uzbekistan”, “Vanuatu”, “Venezuela”, “Viet Nam”, “Virgin Islands, US”, “Wallis and Futuna Islands”, “Western Sahara”, “Yemen”, “Zambia”, “Zimbabwe”, “United States”, “Pakistan”, “Palau”, “Palestinian Territory”, “Panama”, “Papua New Guinea”, “Paraguay”, “Philippines”, “Pitcairn”, “Poland”, “Portugal”, “Puerto Rico”, “Qatar”, “Reunion”, “Romania”, “Russian Federation”, “Rwanda”, “Saint Barthelemy”, “Saint Helena”, “Saint Kitts and Nevis”, “Saint Lucia”, “Saint-Martin (French part)”, “Saint Pierre and Miquelon”, “Saint Vincent and Grenadines”, “Samoa”, “San Marino”, “Sao Tome and Principe”, “Saudi Arabia”, “Senegal”, “Serbia”, “Seychelles”, “Sierra Leone”, “Singapore”, “Slovakia”, “Slovenia”, “Solomon Islands”, “Somalia”, “South Africa”, “South Georgia and the South Sandwich Islands”, “South Sudan”, “Spain”, “United States Minor Outlying Islands”, “United Kingdom”, “Hong Kong”
],
},
“parentOrg”: {“type”: “string”},
“regNumber”: {“type”: “string”},
“tinNumber”: {“type”: “string”},
“companyUrl”: {“type”: “string”},
“whiteLabel”: {“type”: “string”},
“companyName”: {“type”: “string”},
“phoneNumber”: {“type”: “string”},
“tradingName”: {“type”: “string”},
“companyEmail”: {“type”: “string”},
“address”: {
“type”: “object”,
“properties”: {
“registrationAddress”: {
“type”: “object”,
“properties”: {
“regAddress1”: {“type”: “string”},
“regAddress2”: {“type”: “string”},
“regCountry”: {“type”: “string”},
“regState”: {“type”: “string”},
“regPostCode”: {“type”: “string”},
“regCity”: {“type”: “string”},
},
“required”: [
“regAddress1”,
“regCountry”,
“regState”,
“regPostCode”,
“regCity”
],
},
“businessAddress”: {
“type”: “object”,
“properties”: {
“businessAddress1”: {“type”: “string”},
“businessAddress2”: {“type”: “string”},
“businessCountry”: {“type”: “string”},
“businessState”: {“type”: “string”},
“businessPostCode”: {“type”: “string”},
“businessCity”: {“type”: “string”},
},
“required”: [
“businessAddress1”,
“businessCountry”,
“businessState”,
“businessPostCode”,
“businessCity”
],
},
},
“required”: [“registrationAddress”, “businessAddress”],
},
“additionalInfo”: {
“type”: “object”,
“properties”: {
“companyStatus”: {
“type”: “string”,
“enum”: [
“Public Limited Company (PLC)”,
“Private Company Limited by Shares (LTD)”,
“Company Limited by Guarantee”,
“Unlimited Company (UNLTD)”,
“Limited Liability Partnership (LLP)”,
“Community Interest Company”,
“Industrial and Provident Society (IPS)”,
“Royal Charter (RC)”,
“S-Corp”,
“LLC”,
“C-Corp”,
“Sole-Proprietorship”,
“Charitable Incorporated Organisation”,
“Trust”,
“Associations or Social Clubs”,
“Other”
],
},
“businessSectors”: {
“type”: “array”,
“items”: {
“type”: “string”,
“enum”: [
“Finance”,
“Technology”,
“Agriculture”,
“Online gaming, Gambling”,
“Cryptocurrency exchange platform”,
“Forex”,
“IT/Technology”,
“Sales & Marketing”,
“Investment/Finance”,
“Law/Accounting”,
“Consulting”,
“Charitable”,
“Social”,
“Community Based Objective”,
“Other”
],
},
},
“leiNumber”: {“type”: “string”},
“vatNumber”: {“type”: “string”},
“frnNumber”: {“type”: “string”},
},
“required”: [“companyStatus”, “businessSectors”],
},
“shareholders”: {
“type”: “array”,
“items”: {
“type”: “object”,
“properties”: {
“uuid”: {“type”: “string”, “format”: “uuid”},
“shareholderType”: {
“type”: “string”,
“enum”: [“individual”, “corporate”],
},
“dateOfBirth”: {
“type”: “string”,
“pattern”: “^[0-9]{4}-[0-9]{2}-[0-9]{2}$”,
},
},
“required”: [“uuid”],
},
},
“directors”: {
“type”: “array”,
“items”: {
“type”: “object”,
“properties”: {
“uuid”: {“type”: “string”, “format”: “uuid”},
“directorType”: {
“type”: “string”,
“enum”: [“individual”, “corporate”],
},
“dateOfBirth”: {
“type”: “string”,
“pattern”: “^[0-9]{4}-[0-9]{2}-[0-9]{2}$”,
},
},
“required”: [“uuid”],
},
},
},
“required”: [
“country”,
“regNumber”,
“companyName”,
“phoneNumber”,
“tradingName”,
“address”,
“additionalInfo”,
“shareholders”,
“directors”
],
},
},
“required”: [“entityId”, “entityDetail”],
}
{
“entityDetail”: {
“country”: “United Kingdom”,
“regNumber”: “APIReg22222”,
“tinNumber”: “API2TinNo”,
“companyUrl”: “https://www.api2websiteurl.com”,
“companyName”: “APICorpTest2”,
“phoneNumber”: “+442085614250”,
“tradingName”: “APICorpTest2”,
“companyEmail”: “APIcorptest2@gmail.com”,
“address”: {
“registrationAddress”: {
“regAddress1”: “API2RegAdd1”,
“regAddress2”: “API2RegAdd2”,
“regCountry”: “UnitedKingdom”,
“regState”: “API2RegState”,
“regPostCode”: “APIRegPostCode”,
“regCity”: “APIRegCity”
},
“businessAddress”: {
“businessAddress1”: “API2BizAdd1”,
“businessAddress2”: “API2BizAdd2”,
“businessCountry”: “UnitedKingdom”,
“businessState”: “APIBizState”,
“businessPostCode”: “APIBizPostcode”,
“businessCity”: “APIBizCity”
}
},
“additionalInfo”: {
“companyStatus”: “Industrial and Provident Society (IPS)”,
“businessSectors”: [
“Sales & Marketing”
],
“leiNumber”: “API2LEINumber”,
“vatNumber”: “API2Vat”,
“frnNumber”: “API2FRN”
},
“shareholders”: [
{
“uuid”: “6f29aabf-9710-4a36-9dae-1fee79e3d523”,
“shareholderType”: “individual”,
“firstName”: “Shareholder1”,
“middleName”: “”,
“lastName”: “User”,
“officePhone”: “”,
“mobilePhone”: “+442085614250”,
“dateOfBirth”: “1966-12-31”,
“country”: “United Kingdom”,
“postCode”: “SHpostcode”,
“state”: “SHState”,
“city”: “SHCity”,
“percentage”: “100”,
“address1”: “SHAdd1”,
“address2”: “SHAdd2”
“email” : “xyz@gmail.com”
}
],
“directors”: [
{
“uuid”: “02d5a5d8-d267-4145-859d-e85cff82d83d”,
“directorType”: “individual”,
“registeredName”: “”,
“registrationNumber”: “”,
“firstName”: “DFName”,
“middleName”: “”,
“lastName”: “DLName”,
“email”: “Demail@gmail.com”,
“officePhone”: “+442085614250”,
“mobilePhone”: “+442085614250”,
“dateOfBirth”: “1922-12-31”,
“country”: “United Kingdom”,
“postCode”: “DPostcode”,
“state”: “DState”,
“city”: “DCity”,
“address1”: “DAdd1”,
“address2”: “DAdd2”,
“contactPerson”: {
“firstName”: “DContact1FName”,
“middleName”: “”,
“lastName”: “DContact1LName”
}
}
]
},
“entityId”: 47517
}
{
“statusCode”: 200,
“body”: “{\”message\”: \”Additional Entity details added. To update Entity details use UpdateEntityDetails API.\”, \”status\”: true}”
}
{
“statusCode”: 400,
“body”: “{\”message\”: \”xxx”}”
}
Step 4: Create corporate staff
/CreateCorporateStaff
import requests
import json
url = “https://stageapi.cfsemoney.com/v1/CreateCorporateStaff”
payload = json.dumps({
“email”: “noemail@entered.com”,
“white-label”: “<white label link>”,
“corporate_id”: 1345
})
headers = {
‘x-api-key’: ‘Your-API-KEY‘,
‘Authorization’: ‘Bearer <bearer-token>‘
}
response = requests.request(“POST”, url, headers=headers, data=payload)
print(response.text)
curl –location –request POST ‘https://api.cfsemoney.com/v1/CreateCorporateStaff’ \
–header ‘x-api-key: ZZZZZZZZZZZZZZZZXnO41ZsQjeiD0zaeYFPp1d‘\ <<<<Sample value>>>>
–header ‘Authorization: Bearer <<YOUR-SESSION-TOKEN>>‘ \
–header ‘Content-Type: application/json’ \
–data-raw ‘{
“email”:”corporaa@mail.com”,
“white-label”:”wallet.ZIPPO.NET”,
“corporate_id”: 18350
}’
“properties”: {
“email”: {“type”: “string”,”format”: “email”},
“white-label”: {“type”: “string”,”minLength”: 2,”maxLength”:100,”format”: “uri-template”},
“corporate_id”: {“type”: “number”}
},
“required”: [“email”, “white-label”,”corporate_id”] }
{
“statusCode”: 200,
“body”: “{\”message\”: \”The signup was successful. Please proceed with next API AddCorporateDetails\”}”
}
{
“statusCode”: 400,
“body”: “{\”message\”: \”xxx”}”
}