개발자
인보이스 생성
POST 요청 한 번으로 인보이스가 생성되고 결제 페이지 링크가 반환됩니다. 고객은 그 페이지에서 코인과 네트워크를 선택합니다.
요청
curl
curl -X POST https://api.crybit.net/api/v1/payments \
-H "X-Public-Key: pk_…" \
-H "X-Private-Key: sk_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"amount":1490,"currency":"RUB","order_id":"ORD-1048","purpose":"Order 1048"}'| 필드 | 설명 |
|---|---|
amount | 필수. 0.01 이상의 숫자입니다. 가맹점이 수수료를 부담하는 경우 네트워크 수수료가 인보이스 금액을 초과할 수 없으므로 USDT 기준 최소 금액이 존재합니다. 현재 최소 금액은 GET /api/payments/quote로 조회하세요. |
currency | 필수. 법정화폐(RUB, USD, EUR, CNY, GBP, CHF, JPY, KZT 등 주요 통화) 또는 USDT/USDC입니다. 금액은 실시간 환율로 환산됩니다. |
order_id | 자체 주문 ID이며 최대 80자입니다. 비워두면 CryBit가 CB-…를 생성합니다. |
purpose | 설명이며 최대 240자입니다. |
ttl_minutes | 유효 시간은 5~1440분이며 기본값은 30분입니다. |
return_url | 결제 후 고객이 돌아갈 주소입니다(http 또는 https, 최대 500자). 값이 없으면 가맹점의 반환 URL이 사용됩니다. |
crypto, network | 선택 사항. 예를 들어 USDT와 TRC-20처럼 둘 다 전달하면 응답에 주소, 금액, QR 코드가 한 번에 포함됩니다. |
confirmation | 선택 사항. 임베드 위젯을 사용하려면 {"type":"embedded"}로 설정하세요. 토큰은 항상 응답에 포함됩니다. |
응답
응답은 인보이스 객체와 함께 201 상태 코드로 반환됩니다. 고객을 callback_url(결제 페이지)로 안내하세요. crypto와 network를 지정하지 않으면 needs_method가 true가 되며 고객이 해당 페이지에서 직접 선택합니다.
JSON
{
"uuid": "28d0ff38-949c-435e-ad41-c81c219b3597",
"order_id": "ORD-1048",
"amount": 1490,
"currency": "RUB",
"status": "waiting",
"sandbox": true,
"needs_method": true,
"callback_url": "https://pay.crybit.net/28d0ff38-949c-435e-ad41-c81c219b3597",
"confirmation": { "type": "embedded", "confirmation_token": "28d0ff38-…", "widget_url": "https://pay.crybit.net/widget.js" },
"expires_at": "2026-09-21T13:41:42+00:00"
}상태
GET /api/v1/payments/{uuid}는 동일한 객체를 반환합니다. 상태는 waiting, paid, expired, cancelled 중 하나입니다. 고객이 네트워크를 선택하면 객체에 crypto, network, address, 수수료가 포함되고, 결제가 완료되면 status가 paid로 바뀌며 txid와 paid_at이 포함됩니다. 유효 시간이 지난 waiting 상태의 인보이스는 조회 시점에 expired로 바뀝니다. fee_payer는 가맹점이 수수료를 부담하면 shop, 결제 금액에 이미 수수료가 포함되어 있으면 buyer입니다.
FAQ
어떤 헤더를 전송해야 하나요?
X-Public-Key와 X-Private-Key 모두 필수입니다. 비밀 키가 없거나 잘못되었거나 오래된 경우 401이 반환됩니다.
요청 제한이 있나요?
키당 분당 60회 요청으로 제한됩니다.
