Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.nuvion.co/llms.txt

Use this file to discover all available pages before exploring further.

An entity represents a person or business onboarded to your platform. Entities must be created and approved before accounts can be opened for them.

The Entity object

id
string
Unique entity identifier. Prefix: ent_.
type
string
individual or business.
status
string
Review state. One of pending, approved, rejected, or suspended. See Entity statuses below.
profile
object
Identity details. Shape depends on type.
meta
object
Set of key-value pairs for storing additional platform-defined data.
created
number
Unix timestamp in milliseconds when the entity was created.
updated
number
Unix timestamp in milliseconds when the entity was last updated.
Example
{
  "id": "ent_01HXYZ1234ABCD",
  "type": "individual",
  "status": "pending",
  "profile": {
    "first_name": "Jane",
    "last_name": "Smith",
    "email": "jane.smith@example.com",
    "date_of_birth": "1990-06-15",
    "country_of_residence": "US"
  },
  "meta": {},
  "created": 1735725600000,
  "updated": 1735725600000
}

Create an individual entity

Creates a new individual entity. After creation, upload KYC documents and submit for onboarding review before the entity can open accounts.
curl -X POST https://api.nuvion.dev/individual-entities \
  -H "Authorization: Bearer $NUVION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "first_name": "Jane",
    "last_name": "Smith",
    "email": "jane.smith@example.com",
    "date_of_birth": "1990-06-15",
    "country_of_residence": "US"
  }'

Request parameters

first_name
string
required
Legal first name of the individual.
last_name
string
required
Legal last name of the individual.
email
string
required
Contact email address. Must be a valid email format.
date_of_birth
string
required
Date of birth in YYYY-MM-DD format (e.g. 1990-06-15).
country_of_residence
string
required
ISO 3166-1 alpha-2 country code for the individual’s country of residence (e.g. US).
meta
object
Key-value metadata to attach to the entity. Values must be strings.

Response

Returns the created entity object with status: "pending".
Response
{
  "id": "ent_01HXYZ1234ABCD",
  "type": "individual",
  "status": "pending",
  "profile": {
    "first_name": "Jane",
    "last_name": "Smith",
    "email": "jane.smith@example.com",
    "date_of_birth": "1990-06-15",
    "country_of_residence": "US"
  },
  "meta": {},
  "created": 1735725600000,
  "updated": 1735725600000
}
The response includes a person_id field used to associate KYC documents in the next step. See Entities guide for the full onboarding flow.

Update an individual entity

Updates the profile of an existing individual entity.
  -H "Authorization: Bearer $NUVION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Jane_Smith",
    "person": {
    "first_name": "Jane",
    "last_name": "Smith",
    "email": "jane.smith@example.com",
    "date_of_birth": "1990-06-15",
    "nationality": "US",
    "gender": "F",
    "phonenumber": "+1234567890",
    }
  }'

Request parameters

name
string
The name of the individual entity.
person
object
The profile details of the individual entity.
address
object
The address of the individual entity.
business
object
identification
object
The identification details of the individual entity.
parent_entity
string
The parent entity. This links the individual to the to the parent entity for hierarchical relationship.
parent_relationship
string
The relationship of the individual to the parent entity. This describes the relationship of the individual to the parent entity (e.g. director, owner, etc.).

Sample Response

{
    "message": "Individual entity updated successfully",
    "status": "success",
    "data": {
        "changes_applied": {
            "entity_fields": [],
            "person_fields": [],
            "address_fields": [],
            "identification_fields": []
        },
        "address": {
            "id": "01K42STB8B1PF6M89S8TZM3DMF",
            "line_1": "456 Home Street",
            "line_2": "",
            "city": "London",
            "state": "BRY",
            "postal_code": "EC1A 1BB",
            "country_code": "NG",
            "owner_id": "01K42STB61BVP189XE0V0HFT1W",
            "owner_type": "person",
            "created": 1756735810827,
            "updated": 1767137386937
        },
        "entity": {
            "id": "01K42STB8BJPG83AHR297586C2",
            "type": "individual",
            "status": "approved",
            "name": "Alycia Bernhard",
            "is_root": false,
            "user_id": "01K42STB6298K78CZQZ7JA1EZ9",
            "creation_context": "user",
            "created": 1756735810827,
            "updated": 1770112256131
        },
        "person": {
            "id": "01K42STB61BVP189XE0V0HFT1W",
            "first_name": "Alycia",
            "last_name": "Bernhard",
            "middle_name": "Jeremy93",
            "date_of_birth": "1990-01-15",
            "email": "simeon3@yopmail.net",
            "nationality": "GB",
            "gender": "m",
            "is_pep": false,
            "status": "approved",
            "phonenumber": "+440099000912",
            "created": 1756735810753,
            "updated": 1767140718015
        },
        "identification": {
            "id": "01KDRWS7NA4ZVFCC7HJ4KZK6DG",
            "person_id": "01K42STB61BVP189XE0V0HFT1W",
            "verification_status": "pending",
            "created": 1767140794026,
            "updated": 1767140793956,
            "proof_of_address": {
                "type": "utility_bill",
                "document_id": "01KDRWS7GV2NZ66R71E4AC4WYS",
                "verification_status": "pending"
            }
        }
    }
}

Response fields

message
string
A message describing the result of the update operation.
status
string
The status of the update operation.
data
object
The updated entity data.

Create a business entity

Creates a new business entity. After creation, submit for KYB onboarding review before the entity can open accounts.
curl -X POST https://api.nuvion.dev/business-entities \
  -H "Authorization: Bearer $NUVION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "legal_name": "Acme Corp Ltd",
    "email": "accounts@acmecorp.com",
    "business_type": "llc",
    "country_of_incorporation": "US",
    "registered_address": {
      "line_1": "456 Business Ave",
      "city": "New York",
      "state": "NY",
      "postal_code": "10001",
      "country_code": "US"
    }
  }'

Request parameters

Full registered legal name of the business as it appears on incorporation documents.
email
string
required
Business contact email address.
business_type
string
required
Legal structure of the business. One of llc, corporation, partnership, or sole_proprietorship.
country_of_incorporation
string
required
ISO 3166-1 alpha-2 country code where the business is incorporated (e.g. US).
registered_address
object
required
The official registered address of the business.
trading_name
string
The name the business operates under if different from legal_name (DBA).
meta
object
Key-value metadata to attach to the entity. Values must be strings.

Response

Returns the created entity object with type: "business" and status: "pending".
Response
{
  "id": "ent_01HXYZ7890EFGH",
  "type": "business",
  "status": "pending",
  "profile": {
    "legal_name": "Acme Corp Ltd",
    "email": "accounts@acmecorp.com",
    "business_type": "llc",
    "country_of_incorporation": "US"
  },
  "meta": {},
  "created": 1735725600000,
  "updated": 1735725600000
}

Upload a KYC document

Upload identity verification documents for an individual entity. Two documents are required before submitting for onboarding review: one proof of identity and one proof of address.
curl -X POST https://api.nuvion.dev/documents/upload \
  -H "Authorization: Bearer $NUVION_API_KEY" \
  -F "key=identity" \
  -F "link_to_identity[person_id]=pid_01HXYZ5678ABCD" \
  -F "file=@/path/to/passport.pdf"

Request parameters

This endpoint uses multipart/form-data. Do not set Content-Type: application/json.
key
string
required
Document type. identity for a government-issued photo ID (passport, driver’s license, national ID); address for proof of address dated within the last 3 months (utility bill, bank statement).
The person_id returned in the response when the individual entity was created.
file
file
required
The document file. Accepted formats: PDF, JPG, PNG. Maximum file size: 10 MB.

Response

Response
{
  "id": "doc_01HXYZ3456MNOP",
  "key": "identity",
  "status": "uploaded",
  "created": 1735725600000
}
Upload two documents per individual entity: one with key: identity and one with key: address. Both are required before calling the onboarding submission endpoint.

Submit for onboarding review

Submit an entity for KYC or KYB review. For individual entities, call this after uploading all required documents. For business entities, call this after providing full business details.
curl -X POST https://api.nuvion.dev/onboarding-submissions \
  -H "Authorization: Bearer $NUVION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "entity_id": "ent_01HXYZ1234ABCD"
  }'

Request parameters

entity_id
string
required
The ID of the entity to submit for review.

Response

Returns the entity object with status: "pending". Nuvion reviews the submission asynchronously and fires a webhook when the status changes to approved or rejected.
Response
{
  "id": "ent_01HXYZ1234ABCD",
  "type": "individual",
  "status": "pending",
  "profile": {
    "first_name": "Jane",
    "last_name": "Smith",
    "email": "jane.smith@example.com",
    "date_of_birth": "1990-06-15",
    "country_of_residence": "US"
  },
  "meta": {},
  "created": 1735725600000,
  "updated": 1735725600000
}

Update a business entity

Updates the profile of an existing business entity.
  -H "Authorization: Bearer $NUVION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Entity display name",
    "business": {
      "legal_name": "Acme example Ltd",
      "trade_name": "AcmeExample",
      "website": "https://www.example.com",
      "description": "A description of the business",
      "type": "business structure type",
      "phonenumber": "business phone number",
      "email": "accounts@examplecorp.com",
      "registration_number": "business registration number",
      "incorporation_meta": {
        "year": "2020",
        "month": "01",
        "country": "US",
        "state": "NY"
      }
    }
    "address": {
      "line_1": "456 Business Ave",
      "line_2": "Suite 100",
      "line_3": "Attn: Jane Smith",
      "meta": "Additional address metadata",
      "city": "New York",
      "state": "NY",
      "postal_code": "10001",
      "country_code": "US"
    }

    "operating_address": {
      "line_1": "789 Commerce St",
      "line_2": "Floor 5",
      "line_3": "Attn: John Doe",
      "meta": "Additional address metadata",
      "city": "New York",
      "state": "NY",
      "postal_code": "10002",
      "country_code": "US"
    }

    "business_officers": [
      { 
      "id": "", //string - required for updating an existing officer, not needed when adding a new officer
      "person_id": "", //string - required when adding a new officer to link to an existing individual entity
      "job_title": "", //string
      "is_control_person": true, //boolean
      "is_beneficial_owner": true, //boolean
      "ownership_percentage": 50, //number
      "action": "add" // "add" to add a new officer, "update" to update an existing officer, "remove" to remove an officer
      "person":
        {
        "meta":{}
          "first_name": "Jane",
          "last_name": "Smith",
          "middle_name": "",
          "date_of_birth": "1990-06-15",
          "email": "",
          "nationality": "US",
          "gender": "F",
          "identification": {
            "document": {
              "type": "passport",
              "number": "123456789",
              "issue_date": "2020-01-01",
              "expiry_date": "2030-12-31",
              "issuing_country": "US",
              "issuing_authority": "US Department of State",
              "document_id": "doc_01HXYZ3456MNOP"
              "type_specific": {
                "id_subtype": "SSN|BVN|NIN"
              }
            }
            "Proof_of_address": {
              "type": "utility|bank_statement",
              "document_id": "doc_01HXYZ3456MNOP"
            }
          },
          "address": {
            "line_1": "456 Business Ave",
            "line_2": "Suite 100",
            "line_3": "Attn: Jane Smith",
            "meta": "Additional address metadata",
            "city": "New York",
            "state": "NY",
            "postal_code": "10001",
            "country_code": "US"
          } 
          
        }
      }
    ] 
      "meta"{
        "registration_number": "business registration number",
        "tax_id": "", //string
        "liveness_check_id": "" //string - the ID of a liveness check report to link to the business entity for KYB review
        "monthly_payment_count": "", //number - the number of payments processed by the business in the past month to provide additional context for KYB review
        "monthly_transaction_value": "" //number - the total value of payments processed by the business in the past month to provide additional context for KYB review
        "max_transfer_amount": "" //number - the maximum amount the business expects to transfer in a single payment to provide additional context for KYB review
        "annual_turnover": "" //number - the annual turnover of the business to provide additional context for KYB review
        "customer_types": "" //string - the types of customers the business serves (e.g. "individuals", "other businesses", "nonprofits", etc.) to provide additional context for KYB review
        "sales_channel": "" //string - the primary sales channel for the business (e.g. "online", "in-person", "both") to provide additional context for KYB review
        "funding_sources": "" //string - the primary funding sources for the business (e.g. "bank account", "credit card", "both") to provide additional context for KYB review
      }
      "parent_entity": "", //string - the parent entity ID to link to for hierarchical relationship
      "parent_relationship": "" //string - the relationship of the business to the parent entity (
  }'

Request Parameters

name
string
The name of the business entity.
business
object
The profile details of the business entity.
address
object
The registered address of the business.
operating_address
object
The operating address of the business if different from the registered address.
business_officers
array
A list of the business’s officers and their details.
meta
object
Additional metadata about the business entity to provide more context for KYB review.
parent_entity
string
The parent entity ID to link to for hierarchical relationship.
parent_relationship
string
The relationship of the business to the parent entity (e.g. “subsidiary”, “affiliate”, etc.).

Response fields

{
    "message": "Business entity updated successfully",
    "status": "success",
    "data": {
        "changes_applied": {
            "meta_fields": [],
            "entity_fields": [],
            "address_fields": [],
            "officers_added": [],
            "business_fields": [],
            "officers_removed": [],
            "officers_updated": []
        },
        "address": {
            "id": "01K7PMRJDFEXDH9357NAP4MMBN",
            "line_1": "Test Lane",
            "line_2": "",
            "city": "Southampton",
            "state": "England",
            "postal_code": "SO14 0AA",
            "country_code": "GB",
            "owner_id": "01K7PMRJ8M9Z0XXAZTFS7GGN8C",
            "owner_type": "business",
            "created": 1760622823855,
            "updated": 1762164348422
        },
        "entity": {
            "id": "01K7PMRJDGW97VTAMNYJ50W2E3",
            "type": "business",
            "status": "failed",
            "name": "Acme Corporation Ltd Configurable",
            "is_root": true,
            "business_id": "01K7PMRJ8M9Z0XXAZTFS7GGN8C",
            "user_id": "01K42STB6298K78CZQZ7JA1EZ9",
            "creation_context": "user",
            "created": 1760622823856,
            "updated": 1762164393797
        },
        "operating_address": {
            "id": "69087e7c37ddf58d76abd5bf",
            "line_1": "Test Lane",
            "line_2": "",
            "city": "Southampton",
            "state": "England",
            "postal_code": "SO14 0AA",
            "country_code": "GB",
            "owner_id": "01K7PMRJ8M9Z0XXAZTFS7GGN8C",
            "owner_type": "business",
            "created": 1762164348423,
            "updated": 1762164348422
        },
        "business": {
            "id": "01K7PMRJ8M9Z0XXAZTFS7GGN8C",
            "legal_name": "Acme Corporation Ltd Configurable",
            "trade_name": "Acme Corp Optional",
            "email": "acme.corp@yopmail.net",
            "phonenumber": "+2348100000000",
            "registration_number": "123456790",
            "industry": "0763",
            "website": "https://acmecorp-test.com",
            "type": "LLC",
            "description": "Technology solutions provider",
            "incorporation_meta": {
                "year": 2020,
                "month": 1,
                "country": "US",
                "state": "England"
            },
            "created": 1760622823700,
            "updated": 1762164303860
        },
        "business_meta": {
            "id": "01K7PMRJDF77YPGBQRAAN9W9HR",
            "business_id": "01K7PMRJ8M9Z0XXAZTFS7GGN8C",
            "meta": {
                "tax_id": "123456789",
                "proof_of_address": "https://res.cloudinary.com/dunf1s5lt/image/upload/v1762122872/nuvion/business/documents/tzvukdiiomb2sjf9aqxy.png",
                "incorporation_document": "https://res.cloudinary.com/dunf1s5lt/image/upload/v1762122855/nuvion/business/incorporation/awvweye2jeehqclihpe0.png",
                "mou_document": "https://res.cloudinary.com/dunf1s5lt/image/upload/v1762122860/nuvion/business/documents/hg07oel1t00vleuvcjqo.png",
                "use_case": "",
                "registration_number": "123456790"
            },
            "created": 1760622823855,
            "updated": 1762164303929
        },
        "business_officers": [
            {
                "id": "01K7PMRJDFBY4WE1QRYN7AVC5D",
                "person_id": "01K7PMRJB4XJAE6J23F1RD19MN",
                "job_title": "ceo",
                "is_control_person": true,
                "is_beneficial_owner": true,
                "ownership_percentage": 55,
                "business_id": "01K7PMRJ8M9Z0XXAZTFS7GGN8C",
                "created": 1760622823855,
                "updated": 1760636638066
            }
        ]
    }
}
message
string
A human-readable message describing the result of the API call.
status
string
The status of the API call. Either success or error.
data
object
The details of the updated entity, including all related objects and the specific changes that were applied.

Get an entity

Retrieves an existing entity by ID.
curl https://api.nuvion.dev/entities/ent_01HXYZ1234ABCD \
  -H "Authorization: Bearer $NUVION_API_KEY"

Request parameters

entity_id
string
required
The ID of the entity to retrieve.

Response

Returns the entity object.
Response
{
  "id": "ent_01HXYZ1234ABCD",
  "type": "individual",
  "status": "approved",
  "profile": {
    "first_name": "Jane",
    "last_name": "Smith",
    "email": "jane.smith@example.com",
    "date_of_birth": "1990-06-15",
    "country_of_residence": "US"
  },
  "meta": {},
  "created": 1735725600000,
  "updated": 1735725900000
}

Entity statuses

StatusDescription
pendingEntity created or submitted, awaiting review.
approvedKYC/KYB passed — accounts can be created for this entity.
rejectedReview failed — the entity cannot proceed. Check the rejection reason returned by the webhook.
suspendedAccount access temporarily restricted. Contact support to resolve.