Skip to content
Seismic Orchestration

KYB

KYB ("Know Your Business") is how the org becomes a verified customer of the platform. Collect a unified superset of fields once and submit it. The orchestration layer handles the rest.

The dashboard is the canonical entry point for this flow. The endpoints here let automation tools mirror it (status polling, programmatic resubmission) and back the dashboard itself.

API keys can be minted at any point, they're separate from KYB. A key works for read-only and key-management endpoints from day one. Quoting, customer creation, and account creation become callable once the org is approved.

Organization verification endpoints require an admin or owner role in the selected organization, including profile, status, requests for information, and document reads. Other roles receive 403 Forbidden.

Endpoints

KybProfile

The unified superset. Fields are grouped into subsections so partial saves stay manageable.

business

FieldTypeRequired at submitNotes
legal_namestringyesFormal entity name as registered.
trade_namestringno"Doing business as". Must differ from legal_name; omit it when the business has no DBA. When set, a dba_registration document is required at submit.
transliterated_legal_namestring (max 100)conditionalLatin-1 romanization. Required when legal_name contains non-Latin-1 characters.
transliterated_trade_namestring (max 100)noLatin-1 romanization of trade_name.
descriptionstring (max 10000)yesDescription of the business: what product or service it provides, how it makes money, and its major vendors. Mention any licenses it holds — if it is not licensed, state why it is exempt. At least 350 characters at submit (too_short), and from 2026-11-01 at most 1,000 (too_long).
target_customers_descriptionstringyesWho the entity's target customers are, in as much detail as possible: whether they are individuals or businesses, where they are located, and its top customer personas. Include the financial motivation for those customers to open accounts, and how they use them in practice — settlement methods, and inbound / outbound frequency and sizing. Seismic includes it in the supplemental information document it sends to compliance review.
entity_typeenumyesSee EntityType.
corporate_entity_type_descriptionstringconditionalRequired when entity_type === "other" or entity_type === "dao". Free-form.
is_daobooleannoWhether the entity is a DAO. Defaults to false.
industrystringyesNAICS code, e.g. "425120". GET /industries lists the accepted set. Anything else is rejected as incomplete.
registration_numberstringyesGovernment-issued company id (UK Companies House, etc.).
tax_idstringyesEIN / equivalent.
country_of_registrationstring (ISO-3166 α-2)yesTwo-letter code: "US", "GB", etc. See Country codes.
state_of_incorporationstringconditionalRequired when country_of_registration === "US".
formation_datestring (ISO-8601 date)yesWhen the entity was formed.
websitestring (URL)conditionalPublic-facing URL. Omit it when the entity has no public website — then marketing_strategy, website_eta, and social_media_profile are required.
no_websitebooleannoThe entity has no public-facing website. Setting it clears website and makes marketing_strategy, website_eta, and social_media_profile required. Defaults to false.
marketing_strategystringconditionalHow the entity markets themselves to generate business. Required when the entity has no website; minimum 300 characters. Dropped on save when a website is given.
website_etastring (ISO-8601 date, or 0000-00-00)conditionalWhen the entity expects to publish a website, or 0000-00-00 when it does not intend to. Required when the entity has no website; a dated value must be in the future (violations[] reason: "out_of_range"). Dropped on save when a website is given.
social_media_profilestring (URL)conditionalA social media profile of the entity (preferred) or of one of its beneficial owners, standing in for the website it does not have. Required when the entity has no website. Dropped on save when a website is given.
pre_revenuebooleannoThe business has no revenue yet, so its proof of nature of business is alternative documentation of its preparations to operate rather than invoices or executed agreements. Seismic adds a statement to that effect to the supplemental information document it sends to compliance review. Defaults to false. Must be true exactly when volumes.estimated_annual_revenue_usd is 0. A pre-revenue business must also set operations.primary_source_of_funds to private_capital and upload a ubo_source_of_funds document.

EntityType

One of:

  • sole_proprietorship
  • llc
  • s_corporation
  • c_corporation
  • b_corporation
  • non_profit
  • partnership
  • limited_partnership
  • limited_liability_partnership
  • trust
  • dao
  • cooperative
  • other

addresses

FieldTypeRequired at submitNotes
registeredAddressyesLegal registered address. Its country must equal business.country_of_registration. Must be a physical street address — a PO box on line1 or line2 is rejected, in every country.
physicalOperatingAddressnoOperating address if different. Defaults to registered when omitted. Note that the business' physical address cannot be a virtual address or an address of a registered agent.
operating_is_remotebooleannoDefaults to false. Set it when the business operates remotely and the address it operates from is a control person's residence rather than an office — see operating_is_remote.

contact

FieldTypeRequired at submitNotes
emailstringyesPrimary business contact.
phonestringyesE.164 required, valid for its calling code, e.g. +14155552671. See phone numbers.
phone_country_codestring (ISO-3166 α-2)yesCountry whose dialing code is on phone.

operations

Compliance/jurisdiction context.

FieldTypeRequired at submitNotes
business_jurisdictionsarray of ISO-3166 α-2noWhere the business operates.
funds_movement_jurisdictionsarray of ISO-3166 α-2yes (non-empty)Where funds will be sent/received.
primary_source_of_fundsSourceOfFundsyesThe business's historical source of funds: where its funds have come from to date.
primary_source_of_funds_descriptionstringyesFree-form detail on the business's historical source of funds. Required at submit whatever primary_source_of_funds is set to. From 2026-11-01, 200 to 1,000 characters (too_short / too_long).
source_of_wealthSourceOfFundsnoWhere the business's overall wealth came from — the net-worth question, as opposed to primary_source_of_funds, the business's historical source of funds: where its funds have come from to date. Takes the same options as primary_source_of_funds.
regulated_statusRegulatedStatusyes
regulated_activity_descriptionstring (free-form)conditionalFree-form description of the licensed activity. All four regulated_* fields are required together when regulated_status is regulated, registered, or licensed, or when any one of them is set.
regulated_authority_countrystring (ISO-3166 α-2)conditionalIssuing authority's country.
regulated_authority_namestringconditionalName of the regulatory authority.
regulated_license_numberstringconditionalLicense number issued.
account_purposeAccountPurposeyesWhat the org plans to use the platform for.
account_purpose_explanationstringconditionalRequired when account_purpose === "other" or primary_source_of_funds === "other". Free-form. From 2026-11-01, 200 to 1,000 characters when given (too_short / too_long). From 2026-11-14, required whatever account_purpose is.
registered_msbbooleanyes (from 2026-11-01)Whether the business is registered as a money services business in any country. Send true or false; false is an answer. Until 2026-11-01 an omitted value is read as false; from 2026-11-01 a profile without it is reported in missing[] as operations.registered_msb. Omitted on read until answered. Accepts the former conducts_money_services spelling on input.
registered_msb_descriptionstringconditionalRequired when registered_msb is true, and from 2026-11-01 also when in_flow_of_funds is true. Free-form. Accepts the former conducts_money_services_description spelling on input.
licensed_vendorsbooleannoWhether the business relies on licensed or regulated vendors as a core part of its operations. Always recorded as true on the organization's own profile, whatever is sent, so the Provider Attestation (licensed_vendors_attestation) document is always required at submit — see POST /org/kyb/documents.
msb_compliance_screening_descriptionstringconditionalRequired when registered_msb is true, and from 2026-11-01 also when in_flow_of_funds is true. The compliance/AML screening program behind the registration. From 2026-11-01, at least 200 characters (too_short).
high_risk_activities_descriptionstringconditionalRequired when high_risk_activities names a real vertical. The business's involvement in the verticals it disclosed.
compliance_screening_explanationstringconditionalThe combined screening narrative. Normally derived — the two fields above are concatenated under MSB COMPLIANCE SCREENING DESCRIPTION / HIGH RISK ACTIVITY DESCRIPTION headers, since compliance receives one field. Set it directly to supply the whole narrative yourself; required that way when operates_in_prohibited_countries is true, which has no granular field. From 2026-11-01, the narrative, headers included, may be at most 1,000 characters; a longer one fails with a too_long violation on each field feeding it.
operates_in_prohibited_countriesbooleannoWhether the business operates in jurisdictions on the platform's prohibited list. Defaults to false.
high_risk_activitiesarray of HighRiskActivityyesSelf-attestations. Must be non-empty from 2026-09-14 — send ["none_of_the_above"] when none apply, so an unanswered question is never read as a negative answer.
has_complex_ownershipbooleannoSet true when the business has UBOs requiring beneficial-owner disclosure. Defaults to false.
business_classificationsarray of BusinessClassificationyesHow the business positions itself between payers and payees. The organization's own profile always includes financial_services_provider, whatever is sent; add marketplace when it also applies.
acting_as_intermediarybooleannoWhether this entity sits between any payer and payee. This includes marketplaces and fintech companies, even non-custodial ones that are not in the flow of funds. Always true on the organization's own profile; implied by business_classifications.
in_flow_of_fundsbooleanyesWhether the organization will at any point receive, hold, control, convert, or transmit customer funds, fiat or digital. Every organization counts as a financial services provider, so every organization answers it; Seismic includes the answer in the supplemental information document it sends to compliance review. false is an answer. From 2026-11-01, true requires registered_msb_description and msb_compliance_screening_description.

SourceOfFunds

One of:

  • salary
  • savings
  • business_revenue
  • company_capital
  • investment_returns
  • inheritance
  • trust
  • gift
  • grant
  • sale_of_assets
  • real_estate
  • loan
  • private_capital
  • marital
  • winnings
  • other

RegulatedStatus

One of:

  • regulated: set the regulated_* fields alongside.
  • registered: set the regulated_* fields alongside.
  • licensed: set the regulated_* fields alongside.
  • not_required

AccountPurpose

Every value is accepted, but a business should pick from the recommended list — a purpose outside it can reach review as free text instead of a category, which clears slower. The KYB wizard offers exactly these, in this order; mirror it when you build your own form:

  1. purchase_goods_and_services: pay for goods and services.
  2. receive_payments_for_goods_and_services: receive payments for goods and services.
  3. investment: make investments.
  4. ecommerce_collections: accept retail e-commerce payments.
  5. charitable_donations: make or receive charitable donations.
  6. other: set account_purpose_explanation alongside.

Accepted, but not recommended for a business — these are consumer purposes, or duplicate a recommended value:

  • crypto_investment: reviewed the same as investment. Send investment.
  • payroll: paying employees or contractors. Reviewed the same as purchase_goods_and_services. Send that instead.
  • remittances
  • savings
  • personal_use
  • freelance_collections: collecting payment for freelance or contract work.
  • salary_collections: receiving wages from an employer.
  • business_operations: legacy. Accepted for existing integrations — submits as other with the purpose as account_purpose_explanation.
  • treasury_management: legacy. Same handling as business_operations.

HighRiskActivity

One of:

  • adult_entertainment
  • gambling
  • marijuana
  • drugs
  • firearms
  • crypto_mixing: operating a crypto tumbler / mixer service.
  • money_services
  • lending_or_banking
  • foreign_exchange
  • hold_client_funds
  • investment_services
  • safe_deposit_box
  • tobacco
  • pharmaceuticals
  • third_party_payment_processing
  • none_of_the_above: explicit negative. Exclusive — sending it alongside any other value is rejected at submit. Send it on its own to disclose that none apply.

BusinessClassification

One of:

  • marketplace: gig platforms, booking platforms, delivery apps, app stores.
  • financial_services_provider: fintech companies, e.g. non-custodial neobanks, wallets, card programs, payment processors, remittance apps — including ones that never touch the flow of funds.
  • none_of_the_above: explicit negative. Exclusive — sending it alongside any other value is rejected at submit. Send it on its own to disclose that none apply.

marketplace and financial_services_provider each imply acting_as_intermediary.

volumes

Estimated monthly transaction counts plus exact USD figures. Nonnegative. 0 is valid.

FieldTypeRequired at submitNotes
monthly_depositsintegernoFiat deposit count per month.
monthly_withdrawalsintegernoFiat withdrawal count per month.
monthly_crypto_depositsintegernoCrypto deposit count per month. Defaults to monthly_withdrawals when omitted and that count was given.
monthly_crypto_withdrawalsintegernoCrypto withdrawal count per month. Defaults to monthly_deposits when omitted and that count was given.
monthly_investment_deposit_usdnumbernoInvestment deposit value per month, USD.
monthly_investment_withdrawal_usdnumbernoInvestment withdrawal value per month, USD.
monthly_crypto_investment_deposit_usdnumbernoCrypto investment deposit value per month, USD.
monthly_crypto_investment_withdrawal_usdnumbernoCrypto investment withdrawal value per month, USD.
usd_value_of_fiatnumberyesFiat activity per month, USD.
usd_value_of_cryptonumbernoCrypto activity per month, USD. Defaults to usd_value_of_fiat when omitted.
expected_monthly_payments_usdnumbernoExpected total monthly payment volume, USD. Defaults to usd_value_of_fiat when omitted.
estimated_annual_revenue_usdnumberyesAnnual revenue, USD. Send 0 only for a business that has no revenue yet, and set business.pre_revenue to true alongside it.

counterparties

FieldTypeRequired at submit
counterpartiesarray of CounterpartyTypeno

CounterpartyType

One of:

  • self_transactions
  • merchants_suppliers
  • customers
  • employees
  • contractors
  • friends
  • family

attestations

Submission-time attestations. Both must be true at submit.

FieldTypeRequired at submitNotes
terms_and_conditions_acceptedbooleanyes (true)
information_attestedbooleanyes (true)

associated_persons

Add all beneficial owners (individuals with ≥25% ownership) and directors. Every business must have at least one beneficial owner and at least one director, even if it is the same person.

At submit time:

  • At least one entry is required.
  • At least one entry must include "beneficial_owner" in its roles array.
  • Every entry whose ownership_percent is 25 or more must include "beneficial_owner" in its roles array. Below 25 the role is optional.
  • At least one entry must include "control_person" or "officer" in its roles array.
  • At least one entry must include "authorized_signer" in its roles array.
  • From November 14, 2026, every entry must also include at least one of "control_person", "officer", "director", or "authorized_signer". An entry whose only role is "beneficial_owner" is rejected with a violation on associated_persons[i].roles.
  • Every entry must carry a full government-ID block (gov_id_kind, gov_id_number, gov_id_country, and gov_id_front_image_document_id), plus a selfie_document_id and a proof_of_address_document_id.
  • Sum of ownership_percent across all entries must be ≤ 100. Sums under 100 are accepted: the residual represents holders below the disclosure threshold (per FinCEN's CDD rule, only ≥25% holders need be individually identified). Values accept up to two decimal places, so fractional stakes (e.g. three owners at "33.33" each) sum to 100 instead of being forced to whole numbers that overshoot.

customer_id — the field that ties an associated person to one of your individual customers — applies to your business customers' KYB profiles only. Sending it here is rejected.

FieldTypeRequired at submitNotes
idstring (UUID)no (server-assigned)Populated on read after the first save. Required by POST /org/kyb/documents when uploading a per-person document.
first_name, last_namestringyes
middle_namestringno
transliterated_first_namestringconditionalLatin-1 romanization. Required when first_name contains non-Latin-1 characters.
transliterated_middle_namestringconditionalLatin-1 romanization. Required when middle_name is set and contains non-Latin-1 characters.
transliterated_last_namestringconditionalLatin-1 romanization. Required when last_name contains non-Latin-1 characters.
date_of_birthstring (ISO-8601 date)yes
emailstringyes
phonestringyesE.164 required, valid for its calling code. See phone numbers.
phone_country_codestring (ISO-3166 α-2)yesCountry whose dialing code is on phone.
addressAddressyesMailing address.
tax_idstringyesTax id issued by the country of residence (SSN for US residents).
nationalitystring (ISO-3166 α-2)noOptional for every role.
citizenshipstring (ISO-3166 α-2)noOptional for every role; may equal nationality.
gender"male" | "female"noRequired before Seismic can provision a virtual account in some currencies.
country_of_birthstring (ISO-3166 α-2)noWhere the person was born. Distinct from nationality and citizenship — a person can be born in a country whose passport and citizenship they do not hold.
source_of_wealthSourceOfWealthnoWhere this person's overall wealth came from. The net-worth question, as opposed to primary_source_of_funds, the business's historical source of funds: where its funds have come from to date.
previous_economic_activityarray of EconomicActivitynoWhat this person does for a living; more than one value can apply.
ownership_percentstring (decimal, 0–100)yesUp to two decimal places (e.g. "33.33"). Sum across all entries must be ≤ 100.
rolesarray of AssociatedPersonRoleyes (non-empty)At least one entry across all UBOs must include beneficial_owner, and so must every entry whose ownership_percent is 25 or more. From November 14, 2026, every entry must also include control_person, officer, director, or authorized_signer.
titlestringyesJob/role title (e.g. "CEO", "Director"). Required on every associated person, not only control persons and officers.
relationship_established_atstring (ISO-8601 date)yesWhen the person's relationship with the business began (YYYY-MM-DD).
gov_id_kindGovIdKindyesType of government-issued ID.
gov_id_numberstringyesThe ID number as printed on the document.
gov_id_countrystring (ISO-3166 α-2)yesIssuing country.
gov_id_front_image_document_idstring (UUID)yesdocument_id from a POST /org/kyb/documents upload with owner=person, kind=government_issued_id.
gov_id_back_image_document_idstring (UUID)conditionalSame shape as the front. Required when gov_id_kind is drivers_license or national_id.
gov_id_issuance_datestring (ISO-8601 date)noWhen the ID was issued (YYYY-MM-DD).
gov_id_expiration_datestring (ISO-8601 date)noWhen the ID expires (YYYY-MM-DD). Optional in general, but required before an AED account can be opened.
selfie_document_idstring (UUID)yesdocument_id from a POST /org/kyb/documents upload with owner=person, person_id=<this id>, kind=selfie.
proof_of_address_document_idstring (UUID)yesdocument_id from a POST /org/kyb/documents upload with owner=person, person_id=<this id>, kind=proof_of_address.

SourceOfWealth

One of:

  • salary
  • dividends
  • property_rental
  • investment
  • inheritance
  • gambling
  • donation

EconomicActivity

Multi-select. An entry can carry any combination.

  • employed
  • self_employed
  • student
  • gambler
  • pensioner
  • unemployed

AssociatedPersonRole

Multi-select. An entry can carry any combination.

  • beneficial_owner: ≥25% direct or indirect ownership. At least one UBO across the entries must have this role.
  • control_person: exercises significant control / management.
  • officer: named officer (CEO, CFO, etc.). Sets title.
  • director: board member.
  • authorized_signer: empowered to sign on behalf of the entity.

GovIdKind

New submissions accept:

  • passport
  • drivers_license
  • national_id

Existing profile reads can also return legacy values:

  • residence_permit
  • voters_card
  • other

supplemental

Free-form entries for anything that doesn't fit the rest of the form — a text note or a supplemental document, each with a title and description. The section itself is optional at submit; the rules below apply to each entry sent. It is omitted from the response while empty, and profile saves are full-replace: a PUT /org/kyb/profile that omits supplemental clears the section, so echo the existing entries (with their ids) on every save they should survive.

FieldTypeRequired at submitNotes
idstring (UUID)no (server-assigned)Populated on read after the first save. Echo it back so the entry stays stable across saves.
kind"text" | "document"yesWhether the entry is a free-form note or references an uploaded document.
titlestringconditionalShort label for the entry. Required when kind === "text". A document entry needs a title or a description saying what the file is; with neither, submit reports supplemental[i].title.
descriptionstringconditionalThe note body. Required when kind === "text"; for a document entry, required unless title is set.
document_idstring (UUID)conditionalRequired when kind === "document". document_id from a POST /org/kyb/documents upload with kind=supplemental.

Example

A complete KybProfile document:

{
  "business": {
    "legal_name": "Acme Inc.",
    "trade_name": "Acme",
    "description": "Acme Inc. operates a marketplace connecting suppliers and merchants worldwide.",
    "target_customers_description": "Mid-market suppliers and merchants in the US and Canada, typically 20-500 employees. They open accounts to collect marketplace payouts and pay their own suppliers from one balance. Around 30 inbound ACH settlements a month, and weekly outbound runs.",
    "entity_type": "c_corporation",
    "is_dao": false,
    "industry": "425120",
    "registration_number": "1234567",
    "tax_id": "82-1234567",
    "country_of_registration": "US",
    "state_of_incorporation": "DE",
    "formation_date": "2020-04-12",
    "website": "https://acme.example"
  },
  "addresses": {
    "registered": {
      "line1": "1 Wall St",
      "city": "New York",
      "state": "NY",
      "postal_code": "10005",
      "country": "US"
    }
  },
  "contact": {
    "email": "ops@acme.com",
    "phone": "+12025550100",
    "phone_country_code": "US"
  },
  "operations": {
    "business_jurisdictions": ["US"],
    "funds_movement_jurisdictions": ["US", "GB"],
    "primary_source_of_funds": "company_capital",
    "regulated_status": "not_required",
    "account_purpose": "purchase_goods_and_services",
    "registered_msb": false,
    "licensed_vendors": true,
    "operates_in_prohibited_countries": false,
    "high_risk_activities": [
      "none_of_the_above"
    ],
    "business_classifications": [
      "financial_services_provider"
    ],
    "acting_as_intermediary": true,
    "in_flow_of_funds": false
  },
  "volumes": {
    "monthly_deposits": 35,
    "monthly_withdrawals": 30,
    "monthly_investment_deposit_usd": 0,
    "monthly_investment_withdrawal_usd": 0,
    "monthly_crypto_investment_deposit_usd": 0,
    "monthly_crypto_investment_withdrawal_usd": 0,
    "usd_value_of_fiat": 5000000,
    "usd_value_of_crypto": 0,
    "expected_monthly_payments_usd": 250000,
    "estimated_annual_revenue_usd": 5000000
  },
  "counterparties": {
    "counterparties": ["customers", "merchants_suppliers"]
  },
  "attestations": {
    "terms_and_conditions_accepted": true,
    "information_attested": true
  },
  "associated_persons": [
    {
      "first_name": "Alice",
      "middle_name": "Margaret",
      "last_name": "Liddell",
      "date_of_birth": "1985-06-15",
      "email": "alice@acme.com",
      "phone": "+12025550100",
      "phone_country_code": "US",
      "address": {
        "line1": "1 Wall St",
        "city": "New York",
        "state": "NY",
        "postal_code": "10005",
        "country": "US"
      },
      "tax_id": "123-45-6789",
      "nationality": "US",
      "citizenship": "US",
      "gender": "female",
      "country_of_birth": "US",
      "source_of_wealth": "salary",
      "previous_economic_activity": [
        "employed"
      ],
      "ownership_percent": "100",
      "roles": [
        "beneficial_owner",
        "officer",
        "director",
        "authorized_signer"
      ],
      "title": "CEO",
      "relationship_established_at": "2020-04-12",
      "gov_id_kind": "passport",
      "gov_id_number": "X12345678",
      "gov_id_country": "US",
      "gov_id_front_image_document_id": "8e3b…",
      "selfie_document_id": "c07a…",
      "proof_of_address_document_id": "b921…"
    }
  ],
  "supplemental": [
    {
      "id": "0e8b…",
      "kind": "text",
      "title": "Clarification on settlement volumes",
      "description": "Q3 volume increase reflects two new enterprise clients onboarded in July."
    },
    {
      "id": "7f1a…",
      "kind": "document",
      "title": "March bank statement",
      "description": "Statement covering the period referenced in the review.",
      "document_id": "b2c3…"
    }
  ]
}

When fields contain non-Latin-1 characters, supply the matching transliterated_* siblings. For example, an entity legally named in Japanese with a Japanese registered address would also send:

{
  "business": {
    "legal_name": "アクミ株式会社",
    "transliterated_legal_name": "Acme Kabushiki Kaisha",
    "trade_name": "アクミ",
    "transliterated_trade_name": "Acme"
  },
  "addresses": {
    "registered": {
      "line1": "東京都千代田区丸の内1-1-1",
      "city": "東京",
      "postal_code": "100-0005",
      "country": "JP",
      "transliterated_address": {
        "line1": "1-1-1 Marunouchi, Chiyoda-ku",
        "city": "Tokyo",
        "postal_code": "100-0005"
      }
    }
  }
}

Address

Shared shape used in addresses.registered, addresses.physical (via OperatingAddress), and associated_persons[].address. Adding the field to this type propagates to every site that references it. No need to repeat per-section.

FieldTypeRequired at submitNotes
line1stringyesAt least 4 characters.
line2stringno
citystringyes
statestringconditionalISO-3166-2 subdivision (e.g. "NY"). Required when the country's address format includes a state / region (e.g. US, CA, HK); omit it for countries that don't use one (e.g. GB).
postal_codestringconditionalRequired when the country's address format requires a postal code, and format-checked whenever supplied.
countrystring (ISO-3166 α-2)yesTwo-letter code, e.g. "US". See Country codes.
transliterated_addressTransliteratedAddressconditionalRequired when any canonical field above contains non-Latin-1 characters.

No PO boxes.

Both conditional rules resolve per country. GET /customers/address-requirements answers them for one country ahead of submit, so a form can hide the fields that country's address format doesn't have.

OperatingAddress

addresses.physical only. Every Address field, sent inline.

FieldTypeRequired at submitNotes
remotebooleannoDeprecated. Set addresses.operating_is_remote instead. Still accepted as the same declaration, and still returned in step with operating_is_remote while an operating address is on file.

operating_is_remote

Set addresses.operating_is_remote when the business has no office and the address it operates from is the residential address of a control person. Seismic adds a statement to that effect to the supplemental information document it sends to compliance review.

physical stays optional. Send it when the residence the business operates from is not the registered address already on the profile:

{
  "addresses": {
    "operating_is_remote": true,
    "physical": {
      "line1": "88 Cedar Ave",
      "city": "Austin",
      "state": "TX",
      "postal_code": "78701",
      "country": "US"
    }
  }
}

The flag and the operating address have to agree, in both directions. Only beneficial owners count — an associated_persons entry without the beneficial_owner role has no residence the business can be operating out of:

  • With the flag set and a physical address sent, that address must match the address of one of the profile's beneficial owners — otherwise submission fails with an other violation on addresses.physical.
  • When physical does match a beneficial owner's address, the flag must be set — otherwise submission fails with a not_in_allowed_set violation on addresses.operating_is_remote.

Addresses are compared as premises, not as strings: casing, extra whitespace and postal-code separators don't matter, but Ave and Avenue are different addresses.

Addresses sent without either flag read as operating_is_remote: false, so existing payloads are unaffected.

Country codes

Every country-valued field takes an ISO-3166-1 alpha-2 code: two uppercase letters, such as SG, US, GB. Country names are rejected — "Singapore" fails validation, "SG" is what the field wants. The same rule covers country_of_registration, phone_country_code, regulated_authority_country, nationality, citizenship, country_of_birth, gov_id_country, and the jurisdiction arrays.

City-states repeat the name across the address. city keeps the human-readable name ("Singapore"), country still takes the code ("SG"), and state is omitted because Singapore's address format has no state or region. Not every city-state drops state: Hong Kong's format includes an area, so HK addresses require one.

Correct:

{
  "line1": "1 Raffles Place",
  "city": "Singapore",
  "postal_code": "048616",
  "country": "SG"
}

Rejected:

{
  "line1": "1 Raffles Place",
  "city": "Singapore",
  "state": "Singapore",
  "postal_code": "048616",
  "country": "Singapore"
}

TransliteratedAddress

Latin-1 form of an address whose canonical fields contain non-Latin-1 characters (Cyrillic, CJK, Arabic, etc.). Sanctions / PEP screening runs against Latin-only databases, so the romanized form is required alongside the original. All-or-nothing: when the canonical address triggers the requirement, every required canonical field needs a Latin counterpart. country is omitted: ISO-3166 codes are always Latin-1.

FieldTypeRequired at submitNotes
line1stringyesAt least 4 characters.
line2stringnoSupply it when canonical line2 is set.
citystringyes
statestringnoSupply it when canonical state is set.
postal_codestringconditionalSame rule as the canonical postal_code.

KybState

Returned from GET /org/kyb/state, POST /org/kyb/submit, and POST /org/kyb/resync.

FieldTypeNotes
kyb_statusKybStatusWhere the org stands in KYB review.
kyb_linkobject | null{ url, expires_at } when there's a hosted flow pending.
missing_fieldsarray of stringDotted paths into the profile that need to be filled. Empty after a clean submit.
last_synced_atstring (ISO-8601)When the cached state was last reconciled.
rejection_reasonstring | nullHuman-readable, when kyb_status === "rejected".
pending_rfibooleanAn open request for information is outstanding, independent of kyb_status. See when requests are visible for which statuses it can be true at and what clears it.
last_submitted_atstring (ISO-8601) | nullWhen the profile was last filed for verification. null until the first submission. Moves on every resubmission, which the status can't show on its own — a resubmit returns to the review it left.
resubmit_availablebooleanWhether part of the verification can still be re-filed for review. false once the verification on record needs nothing further — submitting again then has no effect.