Skip to main content
An entity is the foundational object in Nuvion. Everything — accounts, transactions, payouts — belongs to an entity. Before an entity can hold funds or move money, they must complete verification through Nuvion’s onboarding flow.

Entity types

TypeDescription
individualA natural person on your platform
businessA registered business or legal entity

Entity statuses

Entities move through a defined lifecycle from creation to activation.
StatusDescription
incompleteEntity has been created but is missing required information or documents
pendingEntity has been submitted for review and verification is underway
approvedVerification is complete — the entity can create accounts and transact
rejectedVerification failed — rejection reasons are provided and the entity may resubmit
suspendedEntity has been suspended — contact Nuvion support
incomplete → pending → approved

             rejected → (resubmit) → pending
Account creation and transactions are only available when an entity has approved status.

The entity object

The full response schema is pending confirmation. The fields below reflect what is currently known. This section will be updated.
{
  "id": "ent_01HXYZ1234ABCD",
  "object": "entity",
  "type": "business",
  "status": "approved",
  "pending_verification_requirements": [],
  "created_at": "2026-01-01T10:00:00Z",
  "updated_at": "2026-01-01T10:30:00Z"
}
id
string
Unique identifier for the entity. ULID format.
object
string
Always entity.
type
string
The entity type. Either individual or business.
status
string
The entity’s current verification status. One of incomplete, pending, approved, rejected, suspended.
pending_verification_requirements
array
A list of items still required before the entity can be submitted for verification. Empty when the entity is ready to submit.
created_at
string
ISO 8601 timestamp of when the entity was created.
updated_at
string
ISO 8601 timestamp of the last update to the entity.

Creating a business entity

Business entity creation is a three-step process: create the entity, upload documents, then submit for verification.

Step 1: Create the entity

curl -X POST https://api.nuvion.dev/business-entities \
  -H "Authorization: Bearer $NUVION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Acme Technologies Ltd",
    "business": {
      "legal_name": "Acme Technologies Limited",
      "trade_name": "Acme Tech",
      "industry": "Technology",
      "email": "finance@acmetech.com",
      "website": "https://acmetech.com",
      "type": "llc",
      "description": "A B2B SaaS platform for logistics management.",
      "registration_number": "EIN-47-1234567",
      "phonenumber": "+12125550100",
      "incorporation_meta": {
        "year": 2019,
        "month": 4,
        "country": "US",
        "state": "Delaware"
      }
    },
    "address": {
      "line_1": "350 Fifth Avenue",
      "city": "New York",
      "state": "New York",
      "postal_code": "10118",
      "country_code": "US"
    },
    "operating_address": {
      "line_1": "350 Fifth Avenue",
      "city": "New York",
      "state": "New York",
      "postal_code": "10118",
      "country_code": "US"
    },
    "business_officers": [
      {
        "job_title": "Chief Executive Officer",
        "is_control_person": true,
        "is_beneficial_owner": true,
        "ownership_percentage": 60,
        "person": {
          "first_name": "Alex",
          "last_name": "Johnson",
          "date_of_birth": "1985-06-15",
          "email": "alex.johnson@acmetech.com",
          "nationality": "US",
          "gender": "m",
          "identification": {
            "document": {
              "type": "international_passport",
              "number": "P123456789",
              "issue_date": "2020-01-10",
              "expiry_date": "2030-01-09",
              "issuing_country": "US"
            }
          },
          "address": {
            "line_1": "210 West 77th Street",
            "city": "New York",
            "state": "New York",
            "postal_code": "10024",
            "country_code": "US"
          }
        }
      }
    ]
  }'

Request fields

name
string
required
A display name for the entity. 1–255 characters.
business
object
required
Core business information.
address
object
Registered address of the business.
operating_address
object
The address where the business physically operates, if different from the registered address. Same structure as address.
business_officers
array
The individuals associated with the business. At least one officer is required.
meta
object
Additional compliance and business metadata.
parent_entity
string
The ID of a parent entity, if this entity is a subsidiary or related entity. The parent_relationship field is set by Nuvion based on the relationship type.

Person object

The person object is used within business_officers to capture individual details.
first_name
string
required
1–100 characters.
last_name
string
required
1–100 characters.
middle_name
string
Max 100 characters.
date_of_birth
string
required
Format: YYYY-MM-DD.
email
string
required
Valid email address.
nationality
string
required
ISO 3166-1 alpha-2 country code. e.g. NG, GH, US.
gender
string
required
m for male, f for female.
identification
object
Identity verification documents for this person.
address
object
Residential address of this person. Same structure as the business address object.

Step 2: Upload documents

Upload the required documents for the business and each officer. Documents must be base64-encoded. Required business documents
DocumentkeyAccepted formats
Certificate of Incorporationcertificate_of_incorporationPDF
Memorandum of Associationmemorandum_of_associationPDF, DOCX
Proof of Addressproof_of_addressPDF, JPG, JPEG, PNG
Tax Verification Documenttax_verificationPDF
Required per officer
Documentkey
Government-issued IDidentity
Proof of addressproof_of_address
curl -X POST https://api.nuvion.dev/documents \
  -H "Authorization: Bearer $NUVION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "entity_id": "ent_01HXYZ1234ABCD",
    "key": "certificate_of_incorporation",
    "description": "Certificate of Incorporation for Acme Technologies Limited",
    "file": "base64_encoded_content_here",
    "meta": {
      "file_type": "application/pdf"
    }
  }'
To link a document to a specific officer, include link_to_identity with the officer’s person_id:
curl -X POST https://api.nuvion.dev/documents \
  -H "Authorization: Bearer $NUVION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "entity_id": "ent_01HXYZ1234ABCD",
    "key": "identity",
    "description": "International passport for Alex Johnson",
    "file": "base64_encoded_front_here",
    "file_back": "base64_encoded_back_here",
    "meta": {
      "file_type": "application/pdf"
    },
    "link_to_identity": {
      "person_id": "per_01HXYZ1234ABCD"
    }
  }'

Request fields

entity_id
string
ULID of the entity to attach the document to. Required when uploading via the API.
file
string
required
Base64-encoded file content. Accepted formats: PDF, JPG, JPEG, PNG, DOC, DOCX.
file_back
string
Base64-encoded back side of the document. Use for identity documents that have information on both sides.
description
string
required
A human-readable description of the document. 1–500 characters.
key
string
The document type. One of identity, proof_of_address, tax_verification, certificate_of_incorporation, memorandum_of_association.
meta
object
Additional document metadata.
Links this document to a specific business officer. Required when uploading identity or address documents for an officer.

Step 3: Submit for verification

Once all required documents are uploaded, submit the entity for review. Check pending_verification_requirements on the entity first — it will be empty when the entity is ready to submit.
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"
  }'
The entity status moves to pending. Nuvion’s compliance team reviews the submission and updates the status to approved or rejected.
Don’t poll GET /entities/:id to check status. Listen for the entities.updated webhook event instead.

Resubmitting after rejection

If an entity is rejected, the rejection response includes the reasons. Correct the relevant information or documents and call POST /onboarding-submissions again.
The full resubmission flow is pending confirmation with engineering. This section will be updated.

Creating an individual entity

Individual entities represent natural persons on your platform. Onboarding follows the same three-step flow as business entities: create the entity, upload identity documents, then submit for verification.

Step 1: Create the entity

curl -X POST https://api.nuvion.dev/individual-entities \
  -H "Authorization: Bearer $NUVION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Alex Johnson",
    "person": {
      "first_name": "Alex",
      "last_name": "Johnson",
      "date_of_birth": "1990-04-12",
      "email": "alex.johnson@example.com",
      "nationality": "US",
      "gender": "m",
      "phonenumber": "+12125550198"
    },
    "address": {
      "line_1": "210 West 77th Street",
      "city": "New York",
      "state": "New York",
      "postal_code": "10024",
      "country_code": "US"
    },
    "identification": {
      "document": {
        "type": "international_passport",
        "number": "P123456789",
        "issue_date": "2020-01-10",
        "expiry_date": "2030-01-09",
        "issuing_country": "US"
      }
    },
    "meta": {
      "funding_source": "salary",
      "monthly_transaction_value": "5000"
    }
  }'
The response includes an entity_id and a person_id. You will need the person_id to link identity documents to this individual in Step 2.

Request fields

name
string
required
A display name for the entity. 1–255 characters.
person
object
required
Personal details for the individual.
address
object
Residential address of the individual.
identification
object
Identity and address verification documents.
business
object
Business context for the individual, if applicable (e.g. a sole trader or freelancer).
meta
object
Additional compliance and risk metadata.
parent_entity
string
The ID of a parent entity, if this individual is associated with a business entity. 26-character ULID.
parent_relationship
string
Description of the relationship to the parent entity. 1–100 characters.

Step 2: Upload documents

Upload two required documents for the individual via POST /documents. Documents must be base64-encoded.
DocumentkeyAccepted types
Government-issued IDidentityPassport, driver’s license, national ID
Proof of addressaddressUtility bill, bank statement, or government correspondence — must be dated within 3 months
curl -X POST https://api.nuvion.dev/documents \
  -H "Authorization: Bearer $NUVION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "entity_id": "ent_01HXYZ1234ABCD",
    "key": "identity",
    "description": "International passport for Alex Johnson",
    "file": "base64_encoded_front_here",
    "file_back": "base64_encoded_back_here",
    "meta": {
      "file_type": "application/pdf"
    },
    "link_to_identity": {
      "person_id": "per_01HXYZ1234ABCD"
    }
  }'

Step 3: Submit for verification

Once both documents are uploaded, submit the entity for review. Check pending_verification_requirements first — it will be empty when the entity is ready to submit.
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"
  }'
The entity status moves to pending. Listen for the entities.updated webhook to be notified when verification completes.

Webhooks

Nuvion emits events when entity state changes. Subscribe to these to keep your platform in sync without polling.
EventWhen it fires
entities.updatedEntity status changes (e.g. pendingapproved)
Full event payload schemas are pending confirmation with engineering. This section will be updated.

What’s next

Create an account

Issue a multi-currency account for an approved entity.

Entities API reference

Full endpoint documentation for creating and managing entities.

Webhooks

Set up webhook listeners for entity and document events.