Skip to main content
This requires an outsourcing agreement with Iron.

Outsourcing Agreement

To use the Outsourcing API Endpoint, a signed KYC/KYB Data Sharing Agreement must be in place between your organization and Iron. This agreement is a prerequisite for submitting customer identification data directly via the API.

Why is the agreement required?

Iron operates under strict anti-money laundering (AML) and counter-terrorist financing (CTF) regulations across multiple jurisdictions. The Outsourcing Agreement establishes a formal legal framework that:
  • Defines data collection standards — Specifies the identity documents, customer information, and verification methods your organization must use when collecting KYC/KYB data on Iron’s behalf.
  • Ensures regulatory compliance — Confirms that both parties maintain the necessary licenses, authorizations, and internal controls required by applicable laws.
  • Sets data quality and security requirements — Establishes obligations around accuracy, completeness, authenticity, and secure transmission of customer data via the API Endpoint.
  • Governs data protection — Ensures customer data is handled in compliance with applicable data protection laws, with each party acting as an independent data controller.
  • Enables independent verification — Clarifies that Iron conducts its own verification and risk assessment on all received data. The agreement does not exempt Iron from its own compliance obligations.

Key considerations

  • Timing matters: Only customer data collected after the agreement is executed is fully compliant for Iron’s onboarding process. Data collected before the agreement may require supplementary verification. See the Data Collection Timeline below for details.
  • Approved identity verification providers: Your identity verification provider(s) must be proposed to and approved by Iron before data sharing begins.
  • Data Completion Loop: If Iron identifies missing or insufficient information during its review, you will be notified to collect and resubmit the required data via the API.
To initiate the Outsourcing Agreement process, contact the Iron team at support@iron.xyz.

Onboarding Lifecycle

Optimizing Customer Identification

Leverage existing customer identity data to streamline onboarding. In optimal scenarios, this eliminates the need for redirects or third-party verification flows.

Regulatory Framework and Data Usage

The outsourcing agreement establishes a framework for sharing customer identification data with Iron for KYC/KYB purposes. However, data collected prior to the agreement falls outside its scope. Regulatory requirements mandate that we independently verify critical identification elements through our authorized KYC providers.

Data Collection Timeline

Example: Outsourcing agreement executed at 13:00 (UTC) on January 1, 2026:
Data TypeCollection TimeStatus
Post-AgreementAfter 13:00, Jan 1, 2025Fully compliant for Iron’s approval process
Pre-AgreementBefore 13:00, Jan 1, 2025Requires supplementary verification

Technical Details

Onboarding via API

The process mirrors the standard onboarding flow, with one exception: when creating an Identification, a body must be provided. The request body uses a type discriminator at the top level — set it to "Person" for KYC or "Business" for KYB. All other fields are siblings of type in the same object.

KYC

curl --request POST \
     --header 'accept: application/json; charset=utf-8' \
     --header 'Idempotency-Key: <unique-request-id>' \
     --header 'x-api-key: <your-api-key>' \
     --url 'https://api.sandbox.iron.xyz/api/customers/<customer_id>/identifications/v2' \
     --data-raw '{
       "type": "Person",
       "first_name": "John",
       "last_name": "Smith",
       "full_name": "John Smith",
       "date_of_birth": "1990-01-01",
       "email_address": "[email protected]",
       "phone_number": "+12125551234",
       "sharing_consent": true,
       "consent_collected_at": "2025-04-01T15:38:21.775210Z",
       "intended_use": "PurchaseDigitalAssets",
       "address": {
         "street_1": "123 Main St",
         "street_2": "Apt 1",
         "city": "Anytown",
         "state": "CA",
         "zip_code": "12345",
         "country": "US"
       },
       "identity": {
         "identity_country_code": "US",
         "identity_number": "123456789",
         "identity_document_type": "Passport",
         "identity_document_front": "<base64-encoded-image>",
         "identity_document_back": "<base64-encoded-image>",
         "selfie": "<base64-encoded-image>",
         "selfie_collected_at": "2025-04-03T13:11:02.263587Z",
         "ip_address": "203.0.113.42",
         "nationality": "US"
       },
       "kyc_questionnaire": {
         "employment_status": "Employed",
         "yearly_gross_income": "From40001To50000",
         "source_of_wealth": "Salary",
         "expected_monthly_transaction_count": "Between5And10",
         "expected_monthly_transaction_volume": "MoreThan500LessThan2000"
       },
       "tax_identification_number": "123-45-6789",
       "documents": [
         {
           "name": "proof_of_address.pdf",
           "file": "<base64-encoded-document>",
           "type": "ProofOfAddress"
         }
       ]
     }'

KYB

curl --request POST \
     --header 'accept: application/json; charset=utf-8' \
     --header 'Idempotency-Key: <unique-request-id>' \
     --header 'x-api-key: <your-api-key>' \
     --url 'https://api.sandbox.iron.xyz/api/customers/<customer_id>/identifications/v2' \
     --data-raw '{
       "type": "Business",
       "company_name": "Acme Corp",
       "registration_number": "HRB 123456",
       "country": "US",
       "incorporation_date": "2021-01-15",
       "legal_address": "123 Commerce St, Suite 100, Anytown, CA 12345",
       "postal_address": "PO Box 456, Anytown, CA 12345",
       "email": "[email protected]",
       "phone": "+12125559876",
       "tax_identification_number": "12-3456789",
       "website": "https://www.acmecorp.com",
       "company_type": "LimitedLiabilityCompany",
       "address": {
         "street_1": "123 Commerce St",
         "street_2": "Suite 100",
         "city": "Anytown",
         "state": "CA",
         "zip_code": "12345",
         "country": "US"
       },
       "beneficiaries": [
         {
           "roles": ["UltimateBeneficialOwner", "Director"],
           "share_percentage": "50.00",
           "beneficiary_info": {
             "first_name": "John",
             "last_name": "Smith",
             "date_of_birth": "1990-01-01",
             "email_address": "[email protected]",
             "phone_number": "+12125551234",
             "identity_country_code": "US",
             "nationality_country_code": "US",
             "tax_jurisdiction_country_code": "US",
             "birth_place": {
               "place": "Anytown",
               "state": "CA",
               "country": "US"
             },
             "address": {
               "street_1": "456 Elm St",
               "city": "Anytown",
               "state": "CA",
               "zip_code": "12345",
               "country": "US"
             }
           }
         }
       ],
       "documents": [
         {
           "type": "IncorporationCert",
           "country": "US",
           "file": "<base64-encoded-document>"
         },
         {
           "type": "ShareholderRegistry",
           "country": "US",
           "file": "<base64-encoded-document>"
         }
       ],
       "questionnaire": {
         "planned_activities": {
           "purpose_and_intended_use": "ReceivingBusinessIncome",
           "estimated_monthly_volume": "FiftyToOneHundredThousand",
           "estimated_monthly_transactions": "TenToTwentyFive",
           "sends_funds_on_customer_behalf": false
         },
         "source_of_funds": {
           "source_of_funds": "BusinessRevenue"
         },
         "business_details": {
           "industry_type": "InformationTechnologyAndSoftware",
           "business_model_description": "SaaS platform providing analytics tools to enterprise clients",
           "main_business_countries": ["US", "GB"],
           "has_licenses_or_registrations": true,
           "requires_licenses_or_registrations": false
         }
       }
     }'
See the createCustomerIdentification endpoint for more details on each parameter.

Triggering EDD

To proactively trigger Enhanced Due Diligence for a customer (e.g. high-volume or high-risk jurisdiction), include the edd_questionnaire object in your Person params. This initializes the identification with the full EDD flow, including Source of Funds collection.
{
  "type": "Person",
  "first_name": "John",
  "last_name": "Smith",
  "full_name": "John Smith",
  "edd_questionnaire": {
    "occupation": "FinancialServices",
    "approximate_net_worth": "Between100001And300000",
    "source_of_funds_proof": "<base64-encoded-document>"
  }
}
FieldValues
occupationAgriculture, ArtsAndEntertainment, Construction, Education, FinancialServices, InformationAndTechnology, Retail, RealEstate, Other
approximate_net_worthUpTo25000, Between25001And50000, Between50001And100000, Between100001And300000, Between300001And500000, Between500001And1000000, Over1000001
source_of_funds_proofBase64-encoded document (jpg, png, pdf, doc, docx, xls, xlsx, odt, ods, txt). Max 10 MB.
When edd_questionnaire is provided, with_edd is set to true on the identification response. See Tracking EDD Status for how to interpret the identification status with EDD.
EDD is only available for individual customers (KYC). Business customers (KYB) are not supported.