Finance OS / API

Sandbox

Sandbox — изолированное окружение для разработки и тестирования. Никакие реальные операции не происходят: документы не отправляются провайдеру, СБП-переводов не существует, крипто-транзакций в блокчейне нет. Идеально для CI/CD и QA.

Как включить

Используйте sk_test_ ключ вместо sk_live_. Сгенерируйте его в Личном Кабинете → API ключи → переключатель MAIN / SANDBOX → SandboxСгенерировать Sandbox ключи.

Authorization: Bearer sk_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Env-isolation
Sandbox и Live полностью изолированы:
  • Customer'ы созданные через sk_test_ имеют env='sandbox'
  • sk_live_ ключ не видит sandbox-customer'ов (404)
  • Балансы, транзакции, KYC-state — отдельные для каждой среды

Чем sandbox отличается от live

Name Type Required Description
KYC optional Документы НЕ отправляются провайдеру. SMS-код всегда 000000. Verify-code мгновенно переводит в verified уровень 2.
Buy (СБП) optional QR — fake URL. Никакой банк не задействован. Транзакция автоматически переходит в completed через ~5 секунд после создания, USDT кредитится по mock-курсу.
Sell (СБП) optional Через 5 секунд completed; никакой банковский перевод не происходит. locked consume'ится корректно для проверки логики.
Crypto deposit optional Адрес возвращается с префиксом TSAND... — на него ничего не отправляйте. Депозиты в sandbox можно симулировать только через сэндбокс-utility (нет в v1).
Crypto withdraw optional locked блокирует средства, через 5 секунд consume'ится. Никаких реальных on-chain транзакций.
Webhooks optional Полноценно работают. Subscribe через sk_test_ → webhook'ы для sandbox-событий. URL'ы партнёра нормально получают HMAC-подписанные POST'ы.
Rates optional Курсы реальные (живой RateService). Это позволяет тестировать математику пересчёта.

Полный flow в sandbox

Полная sandbox-проверка (создать customer → consent → KYC → buy → sell → withdraw):

# 1. Customer
UUID=$(curl -s -X POST https://fin-os.io/api/v1/customers \
  -H "Authorization: Bearer sk_test_..." \
  -d '{"name": "Sandbox Test"}' | jq -r .data.uuid)

# 2. Consent
curl -X POST https://fin-os.io/api/v1/customers/$UUID/consent \
  -H "Authorization: Bearer sk_test_..." -d '{"ip": "1.2.3.4"}'

# 3. KYC fast-path (sandbox)
curl -X POST https://fin-os.io/api/v1/customers/$UUID/kyc/start \
  -H "Authorization: Bearer sk_test_..." -d '{"phone": "+79001112233"}'

curl -X POST https://fin-os.io/api/v1/customers/$UUID/kyc/verify-code \
  -H "Authorization: Bearer sk_test_..." -d '{"code": "000000"}'

# 4. Buy
TX=$(curl -s -X POST https://fin-os.io/api/v1/customers/$UUID/payments/buy \
  -H "Authorization: Bearer sk_test_..." \
  -d '{"amount_rub": 1000, "bank_id": "sber"}' | jq -r .data.uuid)

sleep 6

# 5. Statuse → completed, USDT credited
curl -X GET https://fin-os.io/api/v1/customers/$UUID/payments/buy/$TX/status \
  -H "Authorization: Bearer sk_test_..."

# 6. Balance
curl -X GET https://fin-os.io/api/v1/customers/$UUID/balance \
  -H "Authorization: Bearer sk_test_..."

Magic-значения в sandbox

Name Type Required Description
SMS-код optional 000000 — единственный код, который пройдёт verify-code.
Deposit address optional Префикс TSAND, далее md5(customer_uuid + currency). На реальную транзакцию не сработает.
Tx hash optional Sandbox-транзакции получают tx_hash вида SBX_xxx. Не валидный для блокчейн-explorer'ов.
Status delay optional Транзакции автоматически переходят pending → completed через ~5 секунд после создания (при первом /status вызове).

Лимиты в sandbox

Те же, что в live (диапазоны сумм, max документов, rate-limits). Это сделано намеренно — чтобы партнёр в sandbox видел реальные граничные кейсы.

Очистка sandbox-данных

Sandbox-customer'ы и их транзакции не удаляются автоматически. Для очистки используйте DELETE /api/v1/customers/{uuid} — soft-delete. Полная очистка sandbox-окружения по запросу — пишите admin@fin-os.io.