Subclients¶
A Subclient is an end user of your program (an individual or a business) as represented in GIB's system. Subclients are associated with your Company and hold one or more Subclient Accounts through which money moves. The full Subclients API surface covers creation, lifecycle management, attachments, and history.
Subclient creation is NOT KYC. You complete CIP through your own program. The Subclient record in GIB is the platform-side anchor for the user relationship, not GIB-conducted identity verification. It is the routing point for Transactions, reconciliation, automated returns, and webhook events.
Subclients give the platform a stable identity for the individuals and businesses you serve. Everything else points back: Transactions link to Subclients; reconciliation records reference them; automated-returns configurations apply at the Subclient-Account level; webhook events carry the relevant Subclient ID.
Getting started: for a step-by-step walkthrough creating a Subclient and provisioning its first Virtual Account, see Create a Subclient with a Virtual Account.
Subclient types¶
The type field has two valid values:
| Type | What it represents |
|---|---|
business |
A legal entity (LLC, corp, partnership), a business end user |
natural_person |
An individual, a consumer end user |
The type drives KYC/KYB obligations on your side (see your CIP responsibilities) and may drive different default configurations.
Subclient relationship¶
The relationship_type field categorizes the Subclient's role in your program. Valid values:
| Relationship | Meaning |
|---|---|
customer |
An end user of your program (the most common case) |
beneficiary |
A beneficiary of payments |
payment_service_provider |
A PSP intermediating payments |
affiliate |
An affiliate of your program |
root |
The root entity (your Company itself) |
counterparty |
A counterparty in a transaction |
The non-customer types exist primarily to support Subtransactions, the per-end-user "true parties" record on bulk Transactions. When your program bundles many end-user payments into a single rail event (cross-border remittance, mass payouts, marketplace settlements), you'll create Subclients with relationship_type values that reflect the role each party plays in the de-nested flow: customer for the true sender, beneficiary for the true recipient, payment_service_provider for the liquidity provider, affiliate for an international affiliate handling the payout. The Subtransaction itself references two Subclients (an origin and a destination); their relationship_type is what makes monitoring and screening interpret the flow correctly.
Address completeness depends on the relationship_type. For customer, payment_service_provider, affiliate, and root, a Subclient's address must include country_alpha_2_code, city, and street_address_1. For beneficiary and counterparty, only country_alpha_2_code is required.
Lifecycle¶
A Subclient's state field uses one of these four values:
created: just created, not yet under formal reviewpending: pending review / KYC verificationapproved: verified and able to transactrejected: rejected; cannot transact
A Subclient also has an independent active boolean that controls whether it can currently transact (separate from state). Pause a Subclient by calling updateSubclient with active=false; terminate by setting state=rejected.
Webhook events emitted on Subclient state changes use the subclient_* event-type family: subclient_created, subclient_pending, subclient_approved, subclient_rejected, subclient_updated. See Webhooks for the full event-type catalog.
Required fields¶
For business:
- Legal name
- Tax ID (EIN, or SSN for a sole proprietor)
- Address
- Beneficial owners (>= 25% ownership, with KYC docs per owner)
- Officers and key personnel
For natural_person:
- Full legal name
- Date of birth
- Tax ID (SSN/ITIN)
- Address
Attach supporting documents to the Subclient via createSubclientAttachment.
These fields support the Subclient record; they don't replace your CIP. See your responsibilities.
Your CIP must collect the tax ID. The API fields below are optional, until a program setting requires them for your program.
Tax ID and ID document¶
A Subclient and each of its beneficial owners can carry one tax ID and one government-issued ID document, as structured fields:
| Record | Tax ID | ID document |
|---|---|---|
business Subclient (data) |
tin, tin_type, tin_country_alpha_2_code |
none; registration_country_alpha_2_code sits beside registration_number |
natural_person Subclient (data) |
tin, tin_type, tin_country_alpha_2_code |
identification_* fields |
Beneficial owner (createSubclientUBO) |
same, except ein |
identification_* fields |
tin_type is ssn, itin, ein or foreign_tin. identification_type is passport, driver_license, state_id, national_id, alien_registration or other. New values may be added to both lists, so accept values you don't recognize.
A request is rejected when:
tincomes withouttin_type, or the other way round,tinis blank, or aforeign_tincomes withouttin_country_alpha_2_codeidentification_typecomes withoutidentification_numberor withoutidentification_country_alpha_2_code, oridentification_numbercomes withoutidentification_typeidentification_typeisotherwithoutidentification_type_other_description, or a description comes with any other type- the ID document's country is
USandidentification_issuing_stateis not a 2-letter state code - a US tax ID (
ssn,itin,ein) is not 9 digits once spaces and hyphens are removed, an SSN has area 000, 666 or 900-999, group 00 or serial 0000, or an ITIN does not start with 9
Besides unknown country codes and type values, nothing else is rejected, now or later. An empty string counts as a value, so send null to remove one of these fields. US tax IDs are stored and returned as digits only. A missing tin means it was not provided, never that the person or business has none.
Which number goes where. A number that is both a tax ID and a national ID (Brazil's CPF, Spain's DNI/NIF) goes in tin as a foreign_tin. A national ID that is not a tax ID (Nigeria's NIN) is a national_id document. Don't send a BVN: it identifies a bank customer, not a person.
Masking. Depending on your role, tin comes back in full, with only its last 4 characters showing (✦✦✦✦✦6789), or not at all; identification_number comes back in full, fully masked, or not at all. See Data masking. A masked value sent back is rejected, so echoing a record you read cannot overwrite the stored number.
Attachments keep working. If you send the SSN or TIN as an attachment today, nothing changes. To share your verification provider's result for a person's or owner's identification number or a business EIN, send it as a vendor_output attachment, stripped of anything the result doesn't need.
Your responsibilities vs. GIB's¶
| Concern | Yours | GIB's |
|---|---|---|
| KYC / CIP for Subclients | Yes | We audit your CIP |
KYB for business Subclients |
Yes | We audit |
| OFAC screening at onboarding | Yes | We audit |
| OFAC screening per transaction | Yes | Yes (GIB also screens every entry) |
| Beneficial owner verification | Yes | We audit |
| Document retention | Yes (5+ years) | Same |
Webhook events¶
| Event | When |
|---|---|
subclient_created |
New Subclient created |
subclient_pending |
Subclient transitioned to pending |
subclient_approved |
Subclient transitioned to approved |
subclient_rejected |
Subclient transitioned to rejected |
subclient_updated |
Mutable fields updated |
See Webhooks for delivery semantics.
Related concepts¶
- Companies & Users, the parent layer
- Subclient Accounts, what each Subclient holds
- Virtual Accounts, the most common Subclient Account type
- Automated Returns, configured per Subclient Account
- Webhooks