Sila API Docs | Sila Banking and Payments API

Welcome to the Sila API!

/register

Attaches KYC data and specified blockchain address to an assigned handle.

This is the endpoint you will use to create a new business or individual user and attach information that will be used to verify their identity. This does not start verification of the KYC data; it only adds the data to be verified. See /request_kyc and /check_kyc for verifying KYC status.

Requests

At this endpoint, you will need to complete all fields with user information and include a valid Ethereum address (must not be already used in Sila system and not a smart contract). The private key associated with the crypto_entry.crypto_address should be used to generate usersignature headers on some subsequent calls.

This endpoint's request body is the entity_msg JSON object.

For individuals, KYC data includes:

  • Full legal name
  • U.S. Social Security Number (Full 9-digit SSN)
  • Date of birth
  • A valid street address
  • An email address
  • A phone number

❗️

KYC and street addresses

For individuals, the street address must be their current home/residential address. P.O. Boxes and similar cannot be used unless the individual has a valid US Military P.O. Box on a military base.

It's wise to call this out in your registration flow by prompting your users to input their current home address.

For businesses, KYB data includes:

  • Legal business name
  • Doing-business-as (business alias)
  • Business website
  • Business EIN
  • Date of incorporation (birthdate)
  • Business address
  • Business email address
  • Business phone number

To register a new end-user as a business instead of an individual, the following must be sent in the request:

  • entity.type is “business” (to register an individual, this can be omitted or sent as “individual”).
  • entity.entity_name is the legal name of the business and must not be blank.
  • entity.business_type is the business type name and entity.business_type_uuid is the business type UUID (see /get_business_types). One of these fields must be populated with valid data, but not both.
  • entity.naics_code is the integer code that describes the business’s category and is a required field.

Other things to note:

  • identity.identity_alias must be “EIN” for businesses and the identity.identity_value a US employer identification number (EIN). However, for some business types (sole proprietorships, trusts, and unincorporated associations), the identity object will not be required to pass KYB verification and can actually be omitted in this endpoint altogether.
  • entity.doing_business_as is an optional field that can contain a business name if it differs from its legally registered name.
  • entity.business_website is an optional field containing a business’s website. If KYB fails, this can be used to help complete manual review.

Just like when registering individual users, the crypto.crypto_address field should contain the public ETH address that will be used to authenticate signatures in requests.

Note - We recently renamed the field auth_handle to app_handle. For backward compatibility, auth_handle is still valid but has been removed from our documentation.

Mocking KYC failure states in the sandbox

📘

The Unhappy Path

In sandbox only, you can mock future KYC failure states by using the below values for the entity upon registration.

🚧

Error Messages

This is a list of most possible error messages that can occur when registering a user.

Birthdate
"Registered user must be 18."
"Received birthdate: INPUT_DATE"
"Derived age: AGE"
"Current server date: CURRENT_DATE"

"Not a valid birthdate, maximum allowed AGE_LIMIT."
"Received birthdate: INPUT_DATE"
"Derived age: AGE"
"Current server date: CURRENT_DATE"

Epoch
"Integer not valid epoch."
"Epoch cannot be set in the future. (Parsed epoch as: DATE)"

"Provided epoch in message has expired; please generate a new message and signature to retry this request. (Parsed epoch as: DATE)"

US Postal Code
"invalid_postal_code"

Handle
"This value does not match the required handle pattern: PATTERN"

Blockchain Address
"This value does not match the required address pattern: PATTERN"

Phone Number
"This value does not match the required phone number pattern: PATTERN"

Identity
"Input did not match SSN regex pattern."
"Input did not match EIN regex pattern PATTERN"

Registration Field

Error Trigger

Outcome Tags & Reasons,Status in Response

first_name, OR last_name, OR full_name

Fail

Name Mismatch, Name Not Verified

first_name, OR last_name, OR full_name

documents_required

Status: documents_required

first_name, OR last_name, OR full_name

Fraud

failed, fraud warning and denied fraud

first_name, OR last_name, OR full_name

Review

Status: Review

street_address_1

420 420th Street

Address Not Matched, Address Not Verified

birthdate

1970-04-20

DOB Miskey, DOB Not Verified

identity_alias & identity_value

"identity_alias": "SSN",
"identity_value": "420420420"

SSN Miskey, SSN Not Verified
Status : documents_required

entity: type & entity_name

"entity": { "type": "business", "entity_name": "420 Inc",

Company Name Not Matched

identity_alias & identity_value

"identity_alias": "EIN", "identity_value": "420420420"

FEIN Unmatched, FEIN Document Required
Status: documents_required

device.session_identifier

"fail"

fraud review, denied KYC
documents_required

  
POST /0.2/register HTTP/1.1
Host: sandbox.silamoney.com
authsignature: [GENERATED AUTHSIGNATURE HEX STRING HERE]
Content-Type: application/json

{
  "header": {
    "created": 1234567890,
    "user_handle": "user.silamoney.eth",
    "app_handle": "handle.silamoney.eth",
    "version": "0.2",
    "crypto": "ETH",
    "reference": "<your unique id>"
  },
  "message": "entity_msg",
  "address": {
    "address_alias": "home",
    "street_address_1": "123 Main Street",
    "city": "New City",
    "state": "OR",
    "country": "US",
    "postal_code": "97204-1234"
  },
  "identity": {
    "identity_alias": "SSN",
    "identity_value": "123452222"
  },
  "contact": {
    "phone": "503-123-4567",
    "contact_alias": "",
    "email": "[email protected]"
  },
  "crypto_entry": {
    "crypto_alias": "Address 1",
    "crypto_address": "0x1234567890abcdef1234567890abcdef12345678",
    "crypto_code": "ETH"
  },
  "entity": {
    "birthdate": "1900-01-31",
    "entity_name": "Example User",
    "first_name": "Example",
    "last_name": "User",
    "relationship": "user"
  },
  "device": { #optional 
    "device_fingerprint": "<device_fingerprint>",
    "session_identifier": "<session_key uuid>"
  }
}

***

HTTP/1.1 200 OK

{
  "success": true,
  "reference":"SOME ID",
  "message":"user.silamoney.eth was successfully registered ",
  "response_time_ms": "1171",
  "status":"SUCCESS"
}
POST /0.2/register HTTP/1.1
Host: sandbox.silamoney.com
authsignature: [GENERATED AUTHSIGNATURE HEX STRING HERE]
Content-Type: application/json

{
    "header": {
      "created": 1234567890,
        "app_handle": "your_app_handle.silamoney.eth",
        "user_handle": "your_business_user.silamoney.eth",
        "reference": "<your unique id>",
        "crypto": "ETH",
        "version": "0.2"
    },
    "message": "entity_msg",
    "identity": {
        "identity_alias": "EIN",
        "identity_value": "12-1234567"
    },
    "address": {
        "address_alias": "Office",
        "street_address_1": "123 Candelabra Blvd.",
        "city": "Portland",
        "state": "OR",
        "country": "US",
        "postal_code": "97204"
    },
    "contact": {
        "phone": "1231231234",
        "email": "[email protected]"
    },
    "entity": {
        "type": "business",
        "entity_name": "Your Business Customer, Inc.",
        "business_type": "corporation",
        "business_website": "https://www.yourbusinesscustomer.com",
        "doing_business_as": "Your Business Customer Alias Co.",
        "naics_code": 721
    },
    "crypto_entry": {
        "crypto_code": "ETH",
        "crypto_address": "0x67CB...E1FB"
    }
}

***
  
HTTP/1.1 200 OK

{
    "message": "your_business_user has been successfully registered!",
    "reference": "ref",
    "status": "SUCCESS",
    "business_uuid": "b8859415-a535-4efe-b889-650abb4bd28d"
}
// Individual user
const user = new Sila.User();
user.handle = 'user.silamoney.eth';
user.firstName = 'First';
user.lastName = 'Last';
user.addressAlias = 'your_address_alias';
user.address = '123 Main St';
user.address2 = 'Suite 216';
user.city = 'Anytown';
user.state = 'NY';
user.zip = '12345';
user.country = 'US';
user.contactAlias = 'your_contact_alias';
user.phone = '1234567890';
user.email = '[email protected]';
user.dateOfBirth = '1990-01-01';
user.ssn = '123456222';
user.cryptoAlias = 'your_crypto_alias';
user.cryptoAddress = 'The wallet blockchain address';
user.type = 'individual';

// Business user
const user = new Sila.User();
user.handle = 'user.silamoney.eth';
user.entity_name = 'test business';
user.addressAlias = 'your_address_alias';
user.address = '123 Main St';
user.address2 = 'Suite 216';
user.city = 'Anytown';
user.state = 'NY';
user.zip = '12345';
user.contactAlias = 'your_contact_alias';
user.phone = '1234567890';
user.ein = '320567252';
user.email = '[email protected]';
user.cryptoAlias = 'your_crypto_alias';
user.cryptoAddress = 'The wallet blockchain address';
user.business_type = 'corporation';
user.businessTypeUuid = 'your-business-type-uuid';
user.business_website = 'https://www.yourbusinesscustomer.com';
user.doing_business_as = 'doing business co';
user.naics_code = 721;
user.type = 'business';


// Required for Instant ACH. This field should contain a valid Sardine session identifier.

user.deviceFingerprint = "valid uuid";
user.sessionIdentifier = "valid Sardine session identifier";

const res = await Sila.register(user);

// Success Response Object
console.log(res.statusCode); // 200
console.log(res.data.success); // true
console.log(res.data.reference); // Random reference number
console.log(res.data.status); // SUCCESS
console.log(res.data.message); // User was successfully registered
# Individual User

payload = {
  "country": "US",
  "user_handle": 'user.silamoney.eth',    # Required: Must not be already in use
  "first_name": 'Example',                # Required
  "last_name": 'User',                    # Required
  "entity_name": 'Example User',          # Required
  "identity_value": "123452222",          # Required (SSN)
  "identity_alias": "SSN",  
  "phone": 1234567890,                    # Required:  Must be a valid phone number (format not enforced)
  "email": "[email protected]",              # Required:  Must be a valid email address
  "address_alias": "default",  
  "street_address_1": '123 Main Street',  # Required:  Must be a valid USPS mailing address
  "city": 'New City',                     # Required:  Must be a valid US City matching the zip
  "state": 'OR',                          # Required:  Must be a 2 character US State abbr.
  "postal_code": 97204,                   # Required:  Must be a valid US Postal Code
  "crypto_address": '0x123...890',        # Required:  Must be a valid ethereum 20 byte address starting with 0x
  "crypto_alias": "python_wallet_1",
  "birthdate": "1990-05-19",              # Required
  "session_identifier": "<session_key uuid>"  # Required only for Instant ACH V2 else optional

}

# Business user

payload = {
  "country": "US",
  "user_handle": business_handle,
  "entity_name": 'Business name',
  "identity_alias": "EIN",
  "identity_value": "123452222",
  "phone": 1234567890,
  "email": "[email protected]",
  "address_alias": "default",
  "street_address_1": '1232 Main Street',
  "city": 'New City 2',
  "state": 'OR',
  "postal_code": 97204,
  "crypto_address": eth_address_3,
  "crypto_alias": "python_wallet_2",
  "type": "business",
  "business_type": "corporation",
  "business_website": "https://www.yourbusinesscustomer.com",
  "doing_business_as": "Your Business Customer Alias Co.",
  "naics_code": 721
}

# Make sure silaApp is initialized with registered app_private_key and app_handle.
User.register(silaApp, payload)

### Success Response Object
{
    status: 'SUCCESS',
    success: True,
    message: 'user.silamoney.eth has been submitted to KYC queue.',
    reference: 'd725a285-3cda-47cb-aa55-60db70460ae4',
    status_code: 200
}

### Failure Response Object
{
    status: 'FAILURE',
    message: 'error',
}
// Individual User
User user = new User(String userHandle, String firstName, String lastName, String streetAddress1, @Nullable String streetAddress2,
      String city, String state (2 characters), String postalCode (5 or 9 digit format), String phone, String email, String identityNumber (SSN format "123-45-6222"), String cryptoAddress, Date birthdate, String country (2 characters), boolean smsOptIn, String deviceFingerprint,String sessionIdentifier);
ApiResponse response = api.register(user);

// Business User
BusinessType businessType; //Get business type with api.getBusinessTypes()
NaicsCategoryDescription naicsCategory; //Get naics category with api.getNaicsCategories()

BusinessUser user = new BusinessUser("userhandle", "Office", "123 Main Street",
                "street address 2", "New City", "OR", "97204-1234", "503-123-4567", "[email protected]", "123452222", "crypto address", "entity name", businessType, "https://www.website.com", "doing business as", naicsCategory, String country (2 characters), boolean smsOptIn, String deviceFingerprint,String sessionIdentifier);

ApiResponse response = api.registerBusiness(user);

// Success Response
System.out.println(response.getStatusCode()); // 200
System.out.println(((BaseResponse)response.getData()).getReference());// Random reference number
System.out.println(((BaseResponse)response.getData()).getStatus()); // SUCCESS
System.out.println(((BaseResponse)response.getData()).getMessage()); // user was successfully registered.
System.out.println(((BaseResponse)response.getData()).getSuccess()); // true
// Generate Wallet
//This is a helper function that allows you to generate a wallet (private key & address) that you can then use to register a new user.

// **Important!** Sila does not custody these private keys. They should *never* be sent to us or disclosed to any third party. The private key will be used to sign all requests from the associated user for authentication purposes.

$wallet = $client->generateWallet();
print $wallet->getAddress();        // e.g. 0x9ae1e2a685c5f23981757ea0cb6f5b413aa5f29f
print $wallet->getPrivateKey();     // e.g. 0xe62049e7ca71d9223c8db6751e007ce000d686b7729792160787034e1c976c12

// You can also initialize a wallet using existing values, e.g.

$privateKey = '0xe62049e7ca71d9223c8db6751e007ce000d686b7729792160787034e1c976c12';
$address = '0x9ae1e2a685c5f23981757ea0cb6f5b413aa5f29f';
$wallet = $client->generateWallet($privateKey, $address);
print $wallet->getAddress();        // e.g. 0x9ae1e2a685c5f23981757ea0cb6f5b413aa5f29f
print $wallet->getPrivateKey();     // e.g. 0xe62049e7ca71d9223c8db6751e007ce000d686b7729792160787034e1c976c12

/* Wallet has two attributes:
- `address` is the public blockchain address that will be used when you call register()
- `private_key` is the private key associated with this address. This will _only_ be used to sign requests. **Keep this safe!** */

// For individual users
use Silamoney\Client\Domain\User;

$userHandle = 'user.silamoney.eth';
$firstName = 'Sila';
$lastName = 'Money';
$streetAddress1 = 'Some location';
$streetAddress2 = 'In the world';
$city = 'your beautiful city';
$state = 'NY'; // 2 characters code only
$postalCode = '12345'; // can be 5 or 9 digits format
$phone = '1234567';
$email = '[email protected]';
$cryptoAddress = '0xabc123abc123abc123'; // Hex-encoded blockchain address (prefixed with "0x")
$identityNumber = '123-45-6222'; // SSN format
$datetime = new DateTime();
$birthDate = $datetime->createFromFormat('Y-m-d', '1935-8-1'); // Only date part will be taken when sent to api
$deviceFingerprint = 'fingerprint'; // Valid device fingerprint.
$smsOptIn = true; // If true, a confirmation SMS is sent to the contact phone.
$cryptoAlias = "Address 1";
$addressAlias = "home";
$contactAlias = "";
$sessionIdentifier = "sardine session identifier";

// Create user object
$user = new User($userHandle, $firstName, $lastName, $streetAddress1, $streetAddress2, $city, $state, $postalCode, $phone, $email, $identityNumber, $cryptoAddress, $birthDate, $deviceFingerprint, $smsOptIn, $cryptoAlias, $addressAlias, $contactAlias, $sessionIdentifier);

// Optional parameters can be set to null
$user = new User($userHandle, $firstName, $lastName, null, null, null, null, null, null, null, null, $cryptoAddress, $birthDate);

// You can use the UserBuilder to avoid using null on optional parameters
$builder = new UserBuilder();
$user = $builder->handle($userHandle)->firstName($firstName)->lastName($lastName)->cryptoAddress($cryptoAddress)->birthDate($birthDate)->sessionIdentifier($sessionIdentifier)->build();

// Call the api
$response = $client->register($user);

// For business users
use Silamoney\Client\Domain\BusinessUser;

// Fill your data
$businessHandle = 'business.silamoney.eth';
$name = 'Your Business Inc.';
$streetAddress1 = 'Some location';
$streetAddress2 = 'In the world'; // Optional.
$city = 'your beautiful city';
$state = 'NY'; // 2 characters code only
$postalCode = '12345'; // can be 5 or 9 digits format
$phone = '123-456-7890';
$email = '[email protected]';
$identityNumber = '12-3456789'; // EIN format
$cryptoAddress = '0xabc123abc123abc123'; // Hex-encoded blockchain address (prefixed with "0x")
$naicsCode = 123; // The Naics code.
$businessType = 'Type'; // Required if $businessTypeUuid is not set. The business type name.
$businessTypeUuid = null; // Required if $businessType is not set. The business type uuid.
$doingBusinessAs = 'Your Business'; // Optional. If your business name is different from its legal name
$businessWebsite = 'http://www.yourdomain.com'; // Optional. The business website.
$deviceFingerprint = 'fingerprint'; // Valid device fingerprint.
$smsOptIn = true; // If true, a confirmation SMS is sent to the contact phone.
$cryptoAlias = "Address 1";
$addressAlias = "home";
$contactAlias = "";

// Create business user object
$businessUser = new BusinessUser($businessHandle, $name, $streetAddress1, $streetAddress2, $city, $state, $postalCode, $phone, $email, $identityNumber, $cryptoAddress, $naicsCode, $businessType, $businessTypeUuid, $doingBusinessAs, $businessWebsite, $deviceFingerprint, $smsOptIn, $cryptoAlias, $addressAlias, $contactAlias);

// Optional parameters can be set to null
$businessUser = new BusinessUser($businessHandle, $name, null, null, null, null, null, null, null, null, $cryptoAddress, $naicsCode, $businessType, null, null, null);

// You can use the BusinessUserBuilder to avoid using null on optional parameters
$builder = new BusinessUserBuilder();
$businessUser = $builder->handle($userHandle)->entityName($name)->cryptoAddress($cryptoAddress)->naicsCode($naicsCode)->businessType($businessType)->build();

// Call the api
$response = $client->registerBusiness($businessUser);


// Success 200
echo $response->getStatusCode(); // 200
echo $response->getData()->getReference(); // Random reference number
echo $response->getData()->getStatus(); // SUCCESS
echo $response->getData()->getMessage(); // User was successfully register
// Register individual user

User user = new User
{
    UserHandle = "your_user_handle",
    FirstName = "First",
    LastName = "Last",
    Birthdate = new DateTime(1900, 1, 31),
    EntityName = "First Last",
    CryptoAddress = "0x1234567890abcdef1234567890abcdef12345678",
    CryptoAlias = "Address 1",
    DeviceFingerprint = "test_instant_ach",
    Phone = "503-123-4567",
    SmsOptIn = true,
    Email = "[email protected]",
    ContactAlias = "",
    IdentityValue = "123452222",
    StreetAddress1 = "123 Main Street",
    StreetAddress2 = "",
    City = "New City",
    State = "OR",
    PostalCode = "97204-1234",
    Country = "US",
    AddressAlias = "home",
    Type = "individual",
    SessionIdentifier = "d1b40916-3761-69fe-aa54-88b8ca4d1d5c"
};
ApiResponse<object> response = api.Register(user);

// Register business user

BusinessUser user = new BusinessUser
{
    UserHandle = "your_business_handle",
    EntityName = "Your Business Customer, Inc.",
    BusinessType = "corporation",
    BusinessTypeUuid = "your-business-type-uuid",
    BusinessWebsite = "https://www.yourbusinesscustomer.com",
    DoingBusinessAs = "Your Business Customer Alias Co.",
    NaicsCode = 101,
    CryptoAddress = "0x1234567890abcdef1234567890abcdef12345678",
    CryptoAlias = "Address 1",
    DeviceFingerprint = "test_instant_ach",
    Phone = "503-123-4567",
    SmsOptIn = true,
    Email = "[email protected]",
    ContactAlias = "",
    IdentityValue = "12-1234567",
    StreetAddress1 = "123 Main Street",
    StreetAddress2 = "",
    City = "New City",
    State = "OR",
    PostalCode = "97204-1234",
    Country = "US",
    AddressAlias = "home",
    Type = "business",
    SessionIdentifier = "d1b40916-3761-69fe-aa54-88b8ca4d1d5c"
};
ApiResponse<object> response = api.Register(user);

// Success Response Object

Console.WriteLine(response.StatusCode); // 200
Console.WriteLine(((BaseResponse)response.Data).Reference); // Random reference number
Console.WriteLine(((BaseResponse)response.Data).Status); // SUCCESS
Console.WriteLine(((BaseResponse)response.Data).Message); // user was successfully registered.

Register item details

Key

Type

Description

header

JSON object

Required. Requires these keys in JSON format: created app_handle user_handle. See the /check_handle endpoint for the complete list of fields in this object.

address

JSON object

Optional, though may fail downstream if not present and KYC is required. Requires the keys as laid out below in JSON format. Registers one street address to an entity to be used in ID verification.

identity

JSON object

Optional, though may fail downstream if not present and KYC is required. Requires the keys as laid out below in JSON format. Registers one ID to an entity (SSN, EIN) to be used in ID verification.

contact

JSON object

Optional. Requires the keys as laid out below in JSON format. Registers email, phone to an entity to be used in ID verification.

crypto

JSON object

Required. Requires the keys as laid out below in JSON format. Registers a blockchain address to an entity to be used as a wallet and for API authentication.

entity

JSON object

Required. Requires the keys as laid out below in JSON format. Registers a user.

address.
address_alias

String

Optional, though may fail downstream if not present and KYC is required. Min length 0, Max length 40. May not be null. Example: home

address.
street_address_1

String

Optional, though may fail downstream if not present and KYC is required. Min length 3, Max length 40. May not be null. Example: 920 SW 6th Ave.

address.
street_address_2

String

Optional. Min length 3, Max 40 Example: Suite 216

address.city

String

Optional, though may fail downstream if not present and KYC is required. Min length 2, Max 40 Example: Portland

address.state

String

Optional, though may fail downstream if not present and KYC is required. Requires valid 2 letter abbreviations for US states. Min length 2, Max 2
Example: OR

address.country

String

Optional, though may fail downstream if not present and KYC is required. Requires valid 2 character country code. Only accepts US. Min length 2, Max 2
Example: US

address.postal_code

String

Optional, though may fail downstream if not present and KYC is required. Min length 5, Max 10
Examples: 97204-1234, 97204

identity.
identity_alias

String

Required if identity.identity_value is present otherwise optional. UPPER-CASE Examples: SSN, EIN

identity.
identity_value

String

Optional, though may fail downstream if not present and KYC is required. If identity.identity_alias is an SSN or ITIN, this value should match the required simplified SSN regex pattern: ^\d{3}-?\d{2}-?\d{4}$.
If identity.identity_alias is EIN, this value should match the required EIN regex pattern: ^\d{2}-?\d{7}$.
Example: 123452222

contact.phone

String

Optional, though may fail downstream if not present and KYC is required. Min length 10, Max length 30
This value should match the regex pattern: ([0-9])?((?[0-9]{3})?|[0-9]{3})( |-)?([0-9]{3}( |-)?[0-9]{4}|[a-zA-Z0-9]{7})$
Example: 503-123-4567
(no country code)

contact.sms_opt_in

Boolean

Optional. True, if app is configured with an SMS flow, which triggers sending a confirmation SMS to the phone number in contact.phone.
If no contact.phone field was provided, this is ignored. NOTE: This feature must be provisioned by app.

contact.
contact_alias

String

Optional. Min length 0, Max length 40

contact.email

String

Optional, though may fail downstream if not present and KYC is required. It should be a valid email address. Max length 254
Example: [email protected]

crypto.crypto_alias

String

Optional, but recommended. Max length 40 Example: Address 1
Will be autopopulated with "default" followed by a random hex string if needed for uniqueness.

crypto.
crypto_address

String

Required. Hex-encoded blockchain address (prefixed with "0x")
Must be globally unique, Min length 42, Max length 42
This value should be match the required address regex pattern: ^0x[a-fA-F0-9] {40}$
Example: 0x1234567890abcdef1234567890abcdef12345678

crypto.crypto_code

String

Required. UPPER-CASE, only valid input is ETH Example: ETH

entity.birthdate

Date

Optional. Date must be in this format: YYYY-MM-DD
if the entity type is individual, a person must be 18+ Birthdate cannot be a future date.
Example: 1985-01-31

entity.entity_name

String

Required if entity.type is business,
otherwise optional. Min Length 3, Max 200
Examples: Jane M. Doe, Sila Inc.

entity.first_name

String

Optional if entity.type is business,
otherwise required. Min Length 1, Max 40 Example: Jane
Restricted characters: ^±[email protected]£$%^&*_+§¡€#¢¶•ªº«<>?/:;|=)“

entity.last_name

String

Optional if entity.type is business,
otherwise required. Min Length 1, Max 40 Example: Doe
Restricted characters: ^±[email protected]£$%^&*_+§¡€#¢¶•ªº«<>?/:;|=)“

entity.type

String

Optional. Choice Field: valid values are individual and business. (If not specified, other validation fields assume individual)
Example: individual or business

entity.
business_type

String

Required if entity.type is business and entity. business_type_uuid is not set,
otherwise optional. This field is used if entity.type is business.
Get from allowed business types in /get_business_types endpoint. Required if business_type_uuid is not set.

entity.
business_type_uuid

String

Required if entity.type is business and entity. business_type is not set,
otherwise optional. This field is used if entity.type is business.
Must be a valid UUID4 string.
Get from allowed business types in /get_business_types endpoint. Required if business_type is not set.

entity.naics_code

Integer

Required if entity.type is business,
otherwise optional. This field is used if entity.type is business.
This field is used to specify a valid NAICS code.
Get from allowed NAICS codes in /get_naics_categories endpoint. Example: 721

entity.
doing_business_as

String

Optional. This field is used if entity.type is business.
Fill this field out if your business name is different from its legal name. Example: Your Business

entity.
business_website

String

Optional. This field is used if entity.type is business.
Must be in URI format.
This value should match the regex pattern: ^(?:[a-z0-9.-+])://(?:[^\s:@/]+ (?::[^\s:@/])[email protected])?(?:(?:25[0-5]|2[0-4]\d|[0-1]?\d?\d)(?:.(?:25 [0-5]|2[0-4]\d|[0-1]?\d?\d)){3}|[[0-9a-f:.]+]|(a-z\xA1-\uFFFF0- 9?(?:.(?!-)[a-z\xA1-\uFFFF0-9-]{1,63}(?<!-)).(?!-)(?:[a-z\xA1- \uFFFF-]{2,63}|xn--[a-z0-9]{1,59})(?<!-).?|localhost))(?::\d {2,5})?(?:[/?#][^\s])?\Z
Example: http://www.yourdomain.com

device.device_fingerprint

String

Optional. This field should contain a valid Iovation device fingerprint in the production environment, but can be an arbitrary non-empty string in the sandbox environment.

session.identifier

String

Required for Instant ACH V2. This field should contain a valid session identifier in the production environment, but can be an arbitrary non-empty string in the sandbox environment.
Mock value to pass the verification_status on sandbox environment
"session_identifier": "ppppp-aaaa-dddd-99ce-c45944174e0c"

  

Responses

Status Code

success Attribute

Description

200

true

Handle successfully added to system with KYC data.

400

false

Invalid request body format (validation_details key will have more information if this is the case), handle already in use, or blockchain address already in use.

401

false

authsignature header was absent or incorrect.

Updated 16 days ago


/register


Attaches KYC data and specified blockchain address to an assigned handle.

Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.