Skip to main content

Overview

The KillB Sandbox environment allows you to test your integration without processing real transactions or moving actual funds.
All sandbox transactions use fake money. No real funds will be transferred or charged.

Environments

Base URL: https://teste-94u93qnn.uc.gateway.devFeatures:
  • Test with fake money
  • Simulate payment flows
  • No real KYC verification required
  • Instant transaction processing
  • Full API functionality
Use for:
  • Development and testing
  • Integration verification
  • Demo applications
  • CI/CD testing

Getting Started with Sandbox

Step 1: Get Sandbox Credentials

  1. Sign up at otc.killb.com
  2. Navigate to SettingsAPI Keys
  3. Create a Sandbox API Key
  4. Note your sandbox email and password

Step 2: Set Environment Variables

.env
KILLB_ENV=sandbox
KILLB_BASE_URL=https://teste-94u93qnn.uc.gateway.dev
KILLB_EMAIL=[email protected]
KILLB_PASSWORD=your-sandbox-password
KILLB_API_KEY=your-sandbox-api-key

Step 3: Authenticate

curl --request POST \
  --url https://teste-94u93qnn.uc.gateway.dev/api/v2/auth/login \
  --header 'Content-Type: application/json' \
  --data '{
    "email": "[email protected]",
    "password": "your-sandbox-password"
  }'

Testing Features

Faker Endpoints

Sandbox provides special endpoints to simulate payment events:

Fake Cash-In

Simulate a user completing a fiat payment (PSE, SPEI, etc.)
POST /api/v2/faker/cash-in
Request:
{
  "rampId": "ramp-id-from-creation"
}
What it does:
  • Marks the cash-in as completed
  • Triggers conversion process
  • Moves ramp to next status
Example:
curl --request POST \
  --url https://teste-94u93qnn.uc.gateway.dev/api/v2/faker/cash-in \
  --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{"rampId": "your-ramp-id"}'
Simulate completion of crypto-to-fiat conversion
POST /api/v2/faker/cash-out
Request:
{
  "rampId": "ramp-id-from-creation"
}
What it does:
  • Completes the cash-out process
  • Marks ramp as COMPLETED
  • Triggers webhooks
Example:
curl --request POST \
  --url https://teste-94u93qnn.uc.gateway.dev/api/v2/faker/cash-out \
  --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{"rampId": "your-ramp-id"}'

Testing Workflows

Complete On-Ramp Test

1

Create Test User

Use any valid-looking data - no real verification in sandbox
{
  "firstName": "Test",
  "lastName": "User",
  "email": "[email protected]",
  "document": { "type": "PASSPORT", "number": "TEST123" }
}
2

Create Wallet Account

Use any valid wallet address format
{
  "address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
  "network": "POLYGON",
  "currency": "USDC"
}
3

Create Quotation

Get a test quote with sandbox rates
4

Create Ramp

Execute the ramp transaction
5

Simulate Payment

Use /api/v2/faker/cash-in to simulate user payment
6

Verify Completion

Check ramp status moves to COMPLETED

Complete Off-Ramp Test

1

Create Test User

Same as on-ramp flow
2

Create Bank Account

Use test bank details
{
  "type": "PSE",
  "accountNumber": "1234567890",
  "bankCode": "0001"
}
3

Create Quotation

Quote from USDC to COP/MXN
4

Create Ramp

Execute the ramp with crypto source
5

Simulate Completion

Use /api/v2/faker/cash-out to complete the process
6

Verify Status

Confirm status is COMPLETED and webhooks fired

Test Data

Test Bank Accounts (Colombia)

Bank NameBank CodeAccount Type
Bancolombia0001savings, checking
Banco de Bogotá0002savings, checking
Davivienda0003savings, checking

Test Bank Accounts (Mexico)

Bank NameBank CodeCLABE Format
BBVA012012XXXXXXXXXXXXXXXXX
Santander014014XXXXXXXXXXXXXXXXX
Banorte072072XXXXXXXXXXXXXXXXX

Test Wallet Addresses

Polygon (MATIC):
0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb

Solana:
5FHwkrdxntdK24hgQU8qgBjn35Y1zwhz1GZwCkP4UJnC

Ethereum:
0x71C7656EC7ab88b098defB751B7401B5f6d8976F

Tron:
TXYZopYRdj2D9XRtbG4uXyrFPRw6sM3pjN
These are example addresses for testing. In sandbox, any validly-formatted address will work.

Sandbox Limitations

Be aware of these differences between sandbox and production:
FeatureSandboxProduction
Real money❌ No✅ Yes
KYC verification❌ Simulated✅ Real verification
Payment processing⚡ Instant⏱️ Real timing
Transaction limits♾️ No limits✅ Based on KYC
Webhooks✅ Yes✅ Yes
API rate limits🔓 Relaxed🔒 Enforced

Debugging in Sandbox

Enable Verbose Logging

const DEBUG = process.env.KILLB_ENV === 'sandbox';

async function makeRequest(endpoint, options) {
  if (DEBUG) {
    console.log('Request:', endpoint, options);
  }
  
  const response = await fetch(endpoint, options);
  const data = await response.json();
  
  if (DEBUG) {
    console.log('Response:', data);
  }
  
  return data;
}

Monitor Ramp Status

async function waitForRampCompletion(rampId, maxAttempts = 30) {
  for (let i = 0; i < maxAttempts; i++) {
    const ramp = await fetch(`/api/v2/ramps/${rampId}`, {
      headers: { 'Authorization': `Bearer ${token}` }
    }).then(r => r.json());
    
    console.log(`Attempt ${i + 1}: Status = ${ramp.status}`);
    
    if (ramp.status === 'COMPLETED') {
      return ramp;
    }
    
    if (['FAILED', 'CANCELED', 'REJECTED'].includes(ramp.status)) {
      throw new Error(`Ramp ${ramp.status}: ${ramp.details}`);
    }
    
    await new Promise(resolve => setTimeout(resolve, 2000));
  }
  
  throw new Error('Ramp completion timeout');
}

Switching to Production

When you’re ready to go live:
1

Update Base URL

Change from teste-94u93qnn.uc.gateway.dev to killb.app
const baseUrl = 'https://killb.app';
2

Use Production Credentials

Replace sandbox credentials with production API keys
3

Remove Faker Calls

Remove all calls to /api/v2/faker/* endpoints
4

Implement Real KYC

Handle actual KYC verification and document uploads
5

Add Error Handling

Implement production-grade error handling and logging
6

Enable Monitoring

Set up monitoring and alerting for your integration

Testing Checklist

Before going to production, test these scenarios:
  • User creation and KYC
  • Account creation (bank and wallet)
  • Quotation generation
  • On-ramp completion
  • Off-ramp completion
  • Webhook reception
  • Receipt generation
  • Expired quotation handling
  • Invalid account details
  • Insufficient balance
  • Failed payment simulation
  • Network errors
  • Token expiration
  • Invalid webhook signatures
  • Very small amounts (< $1)
  • Very large amounts (> $10,000)
  • Concurrent transactions
  • Rate limiting
  • Duplicate prevention (externalId)
  • Multiple accounts per user

Need Help?