Docs
⌕ ⌘K
Onboarding / Registering principals

Registering principals

A principal is the legal person behind an agent — the company or individual that owns it, funds it, and answers for what it does. Every agent has one, and no agent can be registered without one. This is where accountability stops being a property of software and becomes a property of someone real.

Principals are your customers

Your platform onboards principals, verifies them, and holds the commercial relationship with them. Nustro records the principal and its verification, then issues certificates against it. A principal never talks to Nustro directly, and Nustro never invoices one.

What a principal is, and is not

A principal isA principal is not
The legal entity or individual that owns one or more agentsA user account — principals have no login and no dashboard
The party whose verification backs every certificate you issue for its agentsAn agent — agents are registered separately and belong to a principal
The holder of the operational wallet keys and the recipient of settlement proceedsA Nustro Customer — in this API a Customer is a client of yours; your platform’s own relationship with Nustro is the Platform account
Never call them merchants

A principal may be a supplier, a buyer, a service vendor, or all three at once depending on what its agents do. “Merchant” presumes a selling relationship that often is not there, and it is not a term the protocol uses. Principal is the word in your UI, your API, and your support macros.

Your own tenant principal

Your platform is itself a principal — the one that owns any agents you operate directly rather than on a customer’s behalf. Nustro creates it automatically when your account is provisioned, seeded from your company profile.

PropertyBehaviour
CreationAutomatic, at account provisioning. You do not register it.
EditingRead-only through the principals API — it is maintained from your company profile so there is one writer, not two.
Counts and reportingExcluded from principal listings and never groupable under a Customer — it is you, not a customer of yours.
AgentsRegistered against it exactly like any other principal’s.

The Verifier

Verification is not performed by Nustro. Your platform verifies each principal — in-house, or through a verification provider it chooses — and asserts the result to Nustro as the principal’s Verifier: a signed, time-bound Verification Attestation carrying its tier. Nustro records it, carries the tier in each of the principal’s agents’ certificates, and checks it against each agent’s type. It never re-verifies.

PartyDoesDoes not
Your platformVerifies the principal, or arranges it with a provider. Asserts the tier — inline when it creates the principal, or with PUT /v1/principals/{pid}/verification — and renews it before it expires.Assert a tier its checks do not support, or assert production tiers before it is accredited
Verification providerRuns identity, business-registration and sanctions checks for your platform, if you use oneTalk to Nustro — its result reaches Nustro only through your assertion
NustroRecords the assertion, re-signs the principal’s agents with the tier, and rejects an agent whose type the tier does not meetVerify principals, hold your documents, or choose your provider
Your platform is the Verifier of record

The asserting platform is the Verifier: the verifier_id on the record is your platform_id, and a principal sees only your platform. Independence is the constraint that matters — the Verifier cannot be the principal being verified. In sandbox you can assert any tier with no documents behind it; in production only an ACCREDITED platform can assert one.

A Verifier must be independent of the principal, capable of the checks its tier requires, cryptographically identifiable, and able to renew and revoke what it issues. Multiple Verifiers operate in the ecosystem, and counterparties can inspect which one attested a principal.

Verifier requirements are normative

Independence, compliance capability, cryptographic identity, accountability, and attestation lifecycle management are protocol requirements, not Nustro policy. AEA/P §5.2.3. Read §5.2 ↗

Two different things are called attestations

A Verification Attestation (§5.2) is what a Verifier issues about a principal, and its tier is what Nustro checks against each agent’s type. An Agent Attestation (§5.7) is a separate, optional credential attached to an agent — and those gate nothing: they are advisory and can never reject a transaction. The one exception is portability: an identity-class Agent Attestation from a Trust-Registry recognised Verifier may satisfy the verification requirement without re-running verification. Non-identity types — compliance.*, capability.*, risk.* — never qualify.

What gets verified

The requirement follows the agent type — matched to whom the principal’s agents act for and whether they can be paid, rather than applied uniformly.

If its agents will be…Required tierBecause
Personal agentsTier 1 — identity and sanctions screening of a natural person. In the Nustro implementation this is satisfied by a card authorization on a live instrument, or an address document. The principal must be an individual.A personal agent only spends its principal’s own funds under declared limits. There is no counterparty exposure to underwrite.
Business agentsTier 2 — Tier 1 plus business registration and beneficial ownership verification. A sole proprietor’s business license satisfies business registration.A business agent may be paid, and one that sells takes payment before delivering and carries escrow. Someone must be identifiable when a dispute goes against it.
Business agents governed by several principalsTier 3 — Tier 2 for each principal, plus cross-principal and PEP screening, source of funds, and ongoing AML monitoring.Shared control is accountable only when every party behind it is. Multi-principal governance is on the Nustro roadmap.
Nustro checks the tier; the verification is yours

The coupling is normative (AEA/P §5.2.1), and Nustro applies it at registration, activation and environment switch: an agent whose principal’s tier is below its type’s requirement is rejected with verification_tier_insufficient, and a personal agent under a company principal with principal_type_mismatch. What Nustro cannot check is the verification behind the tier — so assert only what your checks support. Read §5.2 ↗

Attestations expire

An attestation is time-bound — typically no more than twelve months — because compliance status changes. Sanctions designations appear, businesses dissolve, ownership moves.

EventEffect
Attestation expiresEvery agent under the principal transitions to SUSPENDED. New transactions stop; open disputes continue to resolution.
Verifier revokes itSame effect, immediately — for example on a sanctions designation.
Re-verification completesA new attestation is issued and agents can be returned to ACTIVE.
A personal agent is upgraded to businessThe principal needs a Tier 2 verification first — assert it with PUT /v1/principals/{pid}/verification, then upgrade the agent. The new verification replaces the old one and re-signs every agent under the principal.
Track expiry yourself

Suspension on expiry is automatic and gives no grace period. Your platform holds the principal relationship, so it is the only party positioned to start re-verification before the deadline — drive it from the attestation’s expires_at, not from a support ticket.

Registering a principal

One call. Assert the tier inline once your verification completes, or create the principal first and assert it later with PUT /v1/principals/{pid}/verification — no agent can be registered under it until it has a tier.

cURL
curl -X POST https://api.nustro.com/v1/principals \
  -H "Nustro-Api-Key: nustro_sandbox_••••" \
  -H "Idempotency-Key: 5a91f7c2-0b3d-4c8e-9a17-6de4820cb193" \
  -d '{
    "display_name": "Northwind Operations Ltd",
    "email": "ops@northwind.example",
    "principal_type": "company",
    "country": "GB",
    "external_ref": "crm-00417",
    "verification": {
      "verification_tier": "TIER_2",
      "checks_performed": ["identity", "kyb", "sanctions"],
      "expires_at": "2027-05-02T00:00:00Z"
    }
  }'
FieldNotes
display_nameThe principal’s name — for a company, as it appears on the registration document, not a trading name.
emailThe notice address for dispute and violation emails about this principal’s agents.
countryISO 3166-1 alpha-2. Derives the principal’s market and its available jurisdictions — get it wrong and its agents cannot be configured for the right markets.
principal_typecompany or individual. A personal agent needs an individual principal.
external_refYour own identifier for the principal, unique within your platform. Deduplication works on it.
customer_idOptional, nullable. Groups the principal under one of your Customers — a client of yours; null ungroups. Set or move later via PATCH. Filter principals with ?customer_id=<cid>, or ?customer_id=none for the ungrouped.
verificationYour assertion: the verification_tier (TIER_1, TIER_2 or TIER_3), the advisory checks_performed, and expires_at — at most twelve months out, twelve by default. Nustro adds the attestation_id and your platform as verifier_id.
Keep your verification reference

Nustro records the assertion, not your evidence. Keep the underlying documents and the attestation_id on your side — when a dispute escalates or an auditor asks how a certificate came to exist, that identifier is the thread back to the file.

Principal lifecycle

StateMeaningAgents can transact?
ACTIVEVerified and in good standingYes
ATTESTATION_EXPIREDThe verification has aged out and needs renewalNo — its agents are suspended until re-verified
SUSPENDEDSuspended by your platformNo
CLOSEDOffboarded. Agents are revoked; settled history and open disputes are retainedNo
Nustro enforces

A principal’s state propagates to its agents. Suspension, closure, and attestation expiry all cascade to every agent underneath — there is no per-agent exemption.

Common errors

CodeStatusWhat it means
validation_failed422Not a valid ISO 3166-1 alpha-2 code, or a jurisdiction Nustro does not currently operate in. Field-level, in field_errors.
validation_failed422verification.expires_at is in the past or more than twelve months out.
validation_failed422customer_id references an unknown Customer, or one belonging to another platform. Named in field_errors.
tenant_principal_field_locked409Customer grouping attempted on your own tenant principal — it is you, and never groups under a Customer.
external_ref_exists409A principal with this external_ref already exists for your platform. Re-read it rather than creating a duplicate.
close_blocked_open_disputes409Closure attempted while agents are active or disputes are open.

Next