Skip to main content
The Conduit Sandbox is a safe environment to test integrations, simulate transactions, and explore the platform without using real funds. It mirrors production behavior so you can validate workflows before going live.

Pre-requisites

Sandbox API base URL

https://sandbox-api.conduit.financial/

Important notes

  • Crypto deposits – Use simulator endpoints to deposit crypto in the sandbox.
  • Compliance screening – All checks are simulated and do not reflect real verification.

Overview

Use the sandbox to simulate the complete customer lifecycle:
  1. Create customers
  2. Simulate KYB verification
  3. Change compliance status

Authentication

All requests require API key and secret authentication. Include the Api-Version header:
curl -X POST https://sandbox-api.conduit.financial/endpoint \
  -H "X-API-Key: your_api_key" \
  -H "X-API-Secret: your_api_secret" \
  -H "Content-Type: application/json" \
  -H "Api-Version: 2024-12-01"

1. Create a customer

Create a new customer in the sandbox environment. Endpoint: POST /customers

Request Example

curl -X POST https://sandbox-api.conduit.financial/customers \
  -H "X-API-Key: your_api_key" \
  -H "X-API-Secret: your_api_secret" \
  -H "Content-Type: application/json" \
  -H "Api-Version: 2024-12-01" \
  -d '{
  "businessLegalName": "Acme",
  "country": "USA"
}'

Response

{
  "id": "cus_30sTSsszBuLMXKPtKjNZf65ZJEI",
  "businessLegalName": "Acme",
  "kybLink": "https://verify-sandbox.aiprise.com/?business_onboarding_session_id=id_12234",
  "kybLinkExpiration": "2025-11-03T17:34:43.629Z"
}

2. Simulate customer KYB

Generate KYB data and simulate KYB verification for an existing customer. Endpoint: POST /simulator/customer-kyb
Simulator endpoints are sandbox-only and may not appear in the public API Reference.

Request Schema

{
  "id": "string (required)",
  "countryCode": "string (required, ISO 3166-1 alpha-3)"
}

Request Example

curl -X POST https://sandbox-api.conduit.financial/simulator/customer-kyb \
  -H "X-API-Key: your_api_key" \
  -H "X-API-Secret: your_api_secret" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "cus_2ofTA13AD0xBtbEvBl20aEb1hEu",
    "countryCode": "USA"
  }'

Response Example

{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "type": "business",
  "businessLegalName": "Mocked Business Name",
  "businessTradeName": "Mocked Trade Name",
  "identificationNumbers": [
    { "type": "tax_identification_number", "value": "123456789" },
    { "type": "entity_id", "value": "ABC123XYZ456" }
  ],
  "operatingAddress": {
    "streetLine1": "123 Mock St",
    "streetLine2": "Suite 456",
    "city": "Mock City",
    "state": "MC",
    "postalCode": "12345",
    "country": "US"
  },
  "registeredAddress": {
    "streetLine1": "456 Mock Ave",
    "city": "Mock City",
    "state": "MC",
    "postalCode": "12345",
    "country": "US"
  },
  "phone": "+1-555-555-5555",
  "email": "[email protected]",
  "website": "https://mockbusiness.com",
  "industryData": [
    { "codeType": "NAICS", "code": "123456", "description": "Retail" }
  ],
  "registeredDate": "2018-01-01T00:00:00.000Z",
  "status": "APPROVED",
  "controlPersons": [
    {
      "firstName": "John",
      "lastName": "Doe",
      "email": "[email protected]",
      "roles": [
        { "name": "BENEFICIAL_OWNER", "startDate": "2020-01-01T00:00:00.000Z", "current": true }
      ],
      "ownershipPercentage": 50.0,
      "birthDate": "1980-01-01",
      "address": {
        "streetLine1": "789 Mock Blvd",
        "city": "Mock City",
        "state": "MC",
        "postalCode": "12345",
        "country": "US"
      },
      "nationality": "US",
      "gender": "male",
      "kycStatus": "APPROVED",
      "identityInfo": {
        "documentCountry": "US",
        "documentType": "PASSPORT",
        "documentNumber": "A12345678",
        "documentIssueDate": "2015-01-01",
        "documentExpiryDate": "2025-01-01"
      }
    }
  ],
  "kybCompletedAt": "2023-12-01T12:00:00.000Z",
  "vendorId": "simulator"
}

Mocked Data Details

The response includes the following mocked data:
FieldDescription
businessLegalNameThe legal name of the business
businessTradeNameThe trade name of the business
identificationNumbersIncludes a tax identification number and an entity ID
FieldDescription
operatingAddressThe operating address of the business
registeredAddressThe registered address of the business
FieldDescription
phoneA mocked phone number
emailA mocked email address
websiteA mocked website URL
FieldDescription
codeTypeThe type of industry code (e.g., NAICS)
codeA 6-digit industry code
descriptionA description of the industry
Includes details about individuals associated with the business, such as their name, roles, ownership percentage, and identity information.
FieldDescription
statusThe KYB verification status (e.g., APPROVED)
kybCompletedAtThe timestamp when the KYB process was completed

Use cases

  • Simulate KYB completion after customer creation
  • Test different country-specific flows
  • Generate synthetic KYB data for testing

3. Change compliance status

Simulate compliance status changes for customers or counterparties. Endpoint: POST /simulator/compliance

Customer compliance

Request Schema

{
  "type": "customer",
  "id": "string (required)",
  "status": "enum (required)"
}

Available customer status values

  • active
  • in_compliance_review
  • compliance_rejected
  • created
  • kyb_in_progress
  • kyb_expired
  • kyb_missing_information
  • account_onboarding_pending

Request Example

curl -X POST https://sandbox-api.conduit.financial/simulator/compliance \
  -H "X-API-Key: your_api_key" \
  -H "X-API-Secret: your_api_secret" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "customer",
    "id": "cus_2ofTA13AD0xBtbEvBl20aEb1hEu",
    "status": "active"
  }'

Counterparty compliance

Request Schema

{
  "type": "counterparty",
  "id": "string (required)",
  "status": "enum (required)"
}

Available counterparty status values

  • active
  • deleted
  • in_compliance_review
  • compliance_rejected

Request Example

curl -X POST https://sandbox-api.conduit.financial/simulator/compliance \
  -H "X-API-Key: your_api_key" \
  -H "X-API-Secret: your_api_secret" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "counterparty",
    "id": "cp_2ofTA13AD0xBtbEvBl20aEb1hEu",
    "status": "active"
  }'

Response

{
  "success": true
}

Use cases

  • Test compliance workflow transitions
  • Simulate rejected customers/counterparties
  • Enable customers/counterparties for transactions
  • Test system behavior with different compliance states

4. Simulate Deposit

Simulate a crypto or fiat deposit into the system for the sandbox environment. This allows testing deposit flows without real blockchain transactions or actual bank transfers. Endpoint: POST /simulator/deposit
Simulator endpoints are sandbox-only and may not appear in the public API Reference.

Request Schema

{
  "asset": "string (required, e.g., USDT, USDC, RLUSD, USD)",
  "network": "string (required, e.g., ethereum, tron, solana, polygon, base, xrpl, fiat)",
  "amount": "string (required, positive decimal, e.g., '10.50')",
  "destination": "string (optional for crypto, required for fiat - e.g., 'id:bank-account:...', 'id:acct:...', 'id:wlt:...')"
}

Request Examples

Crypto Deposit (Auto-discovered Destination)

For crypto deposits, the destination wallet is automatically discovered if not provided.
curl --location 'https://sandbox-api.conduit.financial/simulator/deposit' \
  --header 'Content-Type: application/json' \
  --header 'Accept: application/json' \
  --header 'X-API-Key: your_api_key' \
  --header 'X-API-Secret: your_api_secret' \
  --header 'Api-Version: 2024-12-01' \
  --data '{
    "asset": "USDT",
    "network": "ethereum",
    "amount": "100000"
  }'

Fiat Deposit (USD) with Bank Account Destination

For fiat deposits, the destination is required and must be a bank account ID, account ID, or wallet ID.
curl --location 'https://sandbox-api.conduit.financial/simulator/deposit' \
  --header 'Content-Type: application/json' \
  --header 'Accept: application/json' \
  --header 'X-API-Key: your_api_key' \
  --header 'X-API-Secret: your_api_secret' \
  --header 'Api-Version: 2024-12-01' \
  --data '{
    "asset": "USD",
    "network": "fiat",
    "amount": "1000.00",
    "destination": "id:bank-account:2G6BST3Q0age8uCpYN7vIloQyxT"
  }'

Fiat Deposit with Account ID Destination

You can also provide an account ID, which will be automatically resolved to the associated bank account.
curl --location 'https://sandbox-api.conduit.financial/simulator/deposit' \
  --header 'Content-Type: application/json' \
  --header 'Accept: application/json' \
  --header 'X-API-Key: your_api_key' \
  --header 'X-API-Secret: your_api_secret' \
  --header 'Api-Version: 2024-12-01' \
  --data '{
    "asset": "USD",
    "network": "fiat",
    "amount": "1000.00",
    "destination": "id:acct:36iD4vUL0cT3zX5WrUpVqhMGWFN"
  }'

Response Example

Status Code: 201 Created
{
  "status": "success"
}

Use Cases

  • Simulate a crypto deposit for a customer in the sandbox environment
  • Simulate a fiat (USD) deposit to test fiat deposit workflows
  • Test deposit workflows without real blockchain transactions or bank transfers
  • Validate application behavior for different deposit scenarios, such as large deposits or specific assets

Notes

FieldDescription
assetMust be a valid stablecoin token (e.g., USDT, USDC, RLUSD) or USD for fiat deposits
networkMust specify the blockchain network (e.g., ethereum, tron, solana, polygon, base, xrpl) or fiat for USD deposits
amountMust be a positive decimal string representing the deposit amount
destinationOptional for crypto deposits (auto-discovered if omitted). Required for fiat deposits. Accepts:
- id:bank-account:... - Bank account ID (recommended for fiat)
- id:acct:... - Account ID (resolved to bank account for fiat)
- id:wlt:... - Wallet ID (for crypto or fiat with linked wallet)
ResponseWill always return a status of "success" upon successful simulation

Common testing workflows

Complete customer onboarding flow

  1. Create Customer
    POST /customers
    # Save the returned customer ID
    
  2. Simulate KYB Verification
    POST /simulator/customer-kyb
    # Use customer ID from step 1
    
  3. Activate Customer
    POST /simulator/compliance
    # Set customer status to "active"
    

What’s next?

Support

Reach out to our support team to get help and share your feedback.