API 참조

청구서 생성

POST/v1/invoices

계약 v1 / 1.0.0 62 / 2026-10-10

이 페이지에서

Payments 청구서를 만듭니다. 고정된 결제 정보를 받으려면 chain과 amount를 지정합니다. 결제자가 방법을 선택하게 하려면 chain, asset, amount, address, tolerance를 생략하고 invoice_currency와 invoice_amount를 지정합니다. 후자는 쓰기 권한이 있는 운영 키와 Idempotency-Key가 필요하며, 생성과 동일한 재시도는 대화형 결제 URL을 반환합니다. GET과 목록은 읽기 전용 링크를 유지합니다. 시간 초과 후에는 같은 본문과 같은 Idempotency-Key로 재시도하세요. 다른 매개변수는 409을 반환합니다. 키가 있는 재시도는 같은 ID와 201을 반환합니다. 키 없이 고정 방법 생성을 재시도하면 다른 청구서가 생성될 수 있습니다. 블록체인 결제는 만들지 않습니다.

키 권한: invoices / write / payments.

매개변수

매개변수입금필수설명
Idempotency-Keyheader아니요ASCII 영문자, 숫자, 하이픈 또는 밑줄 16~80자입니다. 계정 내에서 고유한 논리적 주문 ID입니다. 결제자가 결제 방법을 선택하는 경우 필수입니다.
string minLength: 16; maxLength: 80; pattern: ^[A-Za-z0-9_-]+$

요청 본문

필드유형필수설명
projectstring아니요Payments 프로젝트 ID입니다. 명시적 선택을 권장합니다. 프로젝트 한정 키는 해당 프로젝트를 사용합니다.
chainstring아니요네트워크 코드입니다.
minLength: 1
assetstring아니요지원 결제 자산: native, 기호 또는 알려진 식별자입니다. 허용 자산은 네트워크에 따라 다르며 생략하면 native를 선택합니다.
기본값: native
amountstring아니요자산 단위의 양수 암호화폐 금액입니다. 정밀도는 자산의 소수 자릿수를 넘을 수 없습니다.
pattern: ^[0-9]+(?:\.[0-9]+)?$
referencestring아니요주문 참조이며 Idempotency-Key를 대체하지 않습니다.
maxLength: 120
addressstring아니요프로젝트 결제 주소 풀에서 선택하는 주소입니다. 생략하면 서비스가 선택합니다.
tolerancestring아니요자산 단위의 허용 부족액으로 amount보다 엄격하게 작아야 합니다. 허용 부족액이 0이면 생략하세요.
pattern: ^[0-9]+(?:\.[0-9]+)?$
customerobject아니요
productobject아니요
payerobject아니요
metadataobject아니요최대 20쌍, JSON 8192바이트까지 허용됩니다. 비밀 값을 포함하지 마세요.
invoice_currencystring아니요3글자 주문 견적 통화이며 invoice_amount와 함께 사용해야 합니다.
pattern: ^[A-Za-z]{3}$
invoice_amountstring아니요invoice_currency로 표시한 양수 주문 금액입니다. chain과 amount가 있으면 판매자가 저장한 스냅샷입니다. 결제 정보가 없으면 결제자가 선택한 자산의 금액을 계산하는 고정 청구 금액입니다.
maxLength: 80; pattern: ^[0-9]+(?:\.[0-9]+)?$
expires_ininteger아니요결제 정보 발급에 성공한 시점부터 시작하는 분 단위 결제 기한입니다. 생략하거나 0이면 프로젝트 정책(기본값 60)을 사용하며, 최댓값은 10080입니다. 기존 고정 방법 요청은 음수도 생략으로 처리하지만, 결제자가 방법을 선택하는 결제에서는 음수를 거부합니다.
기본값: 60; maximum: 10080
application/json
{
  "project": "2002",
  "invoice_currency": "USD",
  "invoice_amount": "12.50",
  "reference": "order-42"
}

요청 예시

예제는 귀하의 계정에서 실제 작업을 수행합니다. 코드에 명시된 환경 변수를 설정하세요. 키를 비공개로 유지하세요. 쓰기 요청은 자동 재시도하지 않습니다.

Shell / cURL
#!/usr/bin/env bash
set -euo pipefail
: "${CRYPTANIO_API_KEY:?Set CRYPTANIO_API_KEY}"
: "${CRYPTANIO_OPERATION_ID:?Set CRYPTANIO_OPERATION_ID}"
: "${CRYPTANIO_PROJECT_ID:?Set CRYPTANIO_PROJECT_ID}"
json_string() {
  local text="$1" char code index output='"'
  for ((index=0; index<${#text}; index++)); do
    char="${text:index:1}"
    case "$char" in
      '"'|'\') output+="\\$char" ;;
      *) printf -v code '%d' "'$char"
         if ((code < 32)); then printf -v char '\\u%04x' "$code"; fi
         output+="$char" ;;
    esac
  done
  printf '%s"' "$output"
}
response_file="$(mktemp)"
trap 'rm -f "$response_file"' EXIT
transfer_status=0
http_status="$(curl \
  --silent --show-error --max-time 30 --request POST \
  --header "Authorization: Bearer $CRYPTANIO_API_KEY" \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --header "Idempotency-Key: $CRYPTANIO_OPERATION_ID" \
  --data-binary '{"project":'"$(json_string "$CRYPTANIO_PROJECT_ID")"',"invoice_currency":"USD","invoice_amount":"12.50","reference":"order-42"}' \
  "https://api.cryptanio.com/v1/invoices" \
  --output "$response_file" --write-out '%{http_code}')" || transfer_status=$?
if [[ "$http_status" == 2?? ]]; then
  cat "$response_file"
  exit "$transfer_status"
fi
printf 'HTTP %s\n' "$http_status" >&2
cat "$response_file" >&2
exit 1
예제 다운로드
Go
// Go; standard library only. Run: go run request.go
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "io"
    "net/http"
    "net/url"
    "os"
    "time"
)

func env(name string) string {
    value := os.Getenv(name)
    if value == "" { fmt.Fprintln(os.Stderr, "Set", name); os.Exit(1) }
    return value
}
func run() error {
    path := "/v1/invoices"

    endpoint, err := url.Parse("https://api.cryptanio.com" + path)
    if err != nil { return err }
    query := endpoint.Query()

    endpoint.RawQuery = query.Encode()
    var payload map[string]any
    if err := json.Unmarshal([]byte("{\"project\":\"2002\",\"invoice_currency\":\"USD\",\"invoice_amount\":\"12.50\",\"reference\":\"order-42\"}"), &payload); err != nil { return err }
    payload["project"] = env("CRYPTANIO_PROJECT_ID")
    body, err := json.Marshal(payload)
    if err != nil { return err }
    request, err := http.NewRequest("POST", endpoint.String(), bytes.NewReader(body))
    if err != nil { return err }
    request.Header.Set("Authorization", "Bearer " + env("CRYPTANIO_API_KEY"))
    request.Header.Set("Accept", "application/json")
    request.Header.Set("Content-Type", "application/json")
    request.Header.Set("Idempotency-Key", env("CRYPTANIO_OPERATION_ID"))
    client := &http.Client{Timeout: 30 * time.Second, CheckRedirect: func(*http.Request, []*http.Request) error { return http.ErrUseLastResponse }}
    response, err := client.Do(request)
    if err != nil { return err }
    defer response.Body.Close()
    if response.StatusCode < 200 || response.StatusCode >= 300 {
        body, err := io.ReadAll(response.Body)
        if err != nil { return err }
        return fmt.Errorf("HTTP %d: %s", response.StatusCode, body)
    }
    _, err = io.Copy(os.Stdout, response.Body)
    return err
}
func main() {
    if err := run(); err != nil { fmt.Fprintln(os.Stderr, err); os.Exit(1) }
}
예제 다운로드
Rust
// Cargo.toml dependencies:
// reqwest = { version = "=0.12.24", features = ["blocking", "json"] }
// serde_json = "=1.0.145"
use std::{error::Error, io, time::Duration};
use reqwest::{blocking::Client, redirect::Policy, Method, Url};

fn env(name: &str) -> Result<String, Box<dyn Error>> {
    let value = std::env::var(name)?;
    if value.is_empty() { return Err(format!("Set {name}").into()); }
    Ok(value)
}
fn run() -> Result<(), Box<dyn Error>> {
    let mut url = Url::parse("https://api.cryptanio.com")?;
    {
        let mut segments = url.path_segments_mut().map_err(|_| "Invalid base URL")?;
        segments.clear();
        segments.push("v1");
        segments.push("invoices");
    }
    let client = Client::builder().timeout(Duration::from_secs(30)).redirect(Policy::none()).build()?;
    let request = client.request(Method::POST, url)
        .header("Authorization", format!("Bearer {}", env("CRYPTANIO_API_KEY")?))
        .header("Accept", "application/json".to_owned())
        .header("Content-Type", "application/json".to_owned())
        .header("Idempotency-Key", env("CRYPTANIO_OPERATION_ID")?);
    let mut body: serde_json::Value = serde_json::from_str("{\"project\":\"2002\",\"invoice_currency\":\"USD\",\"invoice_amount\":\"12.50\",\"reference\":\"order-42\"}")?;
    body["project"] = serde_json::Value::String(env("CRYPTANIO_PROJECT_ID")?);
    let request = request.json(&body);
    let mut response = request.send()?;
    let status = response.status();
    if !status.is_success() { return Err(format!("HTTP {}: {}", status.as_u16(), response.text()?).into()); }
    io::copy(&mut response, &mut io::stdout())?;
    Ok(())
}
fn main() {
    if let Err(error) = run() { eprintln!("{error}"); std::process::exit(1); }
}
예제 다운로드
PHP
<?php
// PHP 8 with the cURL extension. Run this on your server.
function env(string $name): string {
    $value = getenv($name);
    if ($value === false || $value === '') throw new RuntimeException('Set ' . $name);
    return $value;
}
try {
    $path = '/v1/invoices';

    $query = [

    ];
    $url = 'https://api.cryptanio.com' . $path . ($query ? '?' . http_build_query($query, '', '&', PHP_QUERY_RFC3986) : '');
    $headers = [
        'Authorization: ' . 'Bearer ' . env('CRYPTANIO_API_KEY'),
        'Accept: ' . 'application/json',
        'Content-Type: ' . 'application/json',
        'Idempotency-Key: ' . env('CRYPTANIO_OPERATION_ID'),
    ];
    $body = json_decode('{"project":"2002","invoice_currency":"USD","invoice_amount":"12.50","reference":"order-42"}', true, 512, JSON_THROW_ON_ERROR);
    $body['project'] = env('CRYPTANIO_PROJECT_ID');
    $curl = curl_init($url);
    curl_setopt_array($curl, [
        CURLOPT_CUSTOMREQUEST => 'POST',
        CURLOPT_HTTPHEADER => $headers,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => false,
        CURLOPT_CONNECTTIMEOUT => 10,
        CURLOPT_TIMEOUT => 30,
        CURLOPT_POSTFIELDS => json_encode($body, JSON_THROW_ON_ERROR),
    ]);
    $response = curl_exec($curl);
    if ($response === false) throw new RuntimeException(curl_error($curl));
    $status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
    if ($status < 200 || $status >= 300) throw new RuntimeException('HTTP ' . $status . ': ' . $response);
    echo $response;
} catch (Throwable $error) {
    fwrite(STDERR, $error->getMessage() . PHP_EOL);
    exit(1);
}
예제 다운로드
Python
# Python 3; standard library only.
import json
import os
import sys
from urllib.error import HTTPError, URLError
from urllib.parse import quote, urlencode
from urllib.request import HTTPRedirectHandler, Request, build_opener

def env(name):
    result = os.environ.get(name)
    if not result:
        raise ValueError("Set " + name)
    return result

class NoRedirect(HTTPRedirectHandler):
    def redirect_request(self, req, fp, code, msg, headers, newurl):
        return None

try:
    path = "/v1/invoices"

    query = {

    }
    url = "https://api.cryptanio.com" + path + ("?" + urlencode(query) if query else "")
    headers = {
        "Authorization": "Bearer " + env("CRYPTANIO_API_KEY"),
        "Accept": "application/json",
        "Content-Type": "application/json",
        "Idempotency-Key": env("CRYPTANIO_OPERATION_ID"),
    }
    body = json.loads("{\"project\":\"2002\",\"invoice_currency\":\"USD\",\"invoice_amount\":\"12.50\",\"reference\":\"order-42\"}")
    body["project"] = env("CRYPTANIO_PROJECT_ID")
    data = json.dumps(body).encode("utf-8")
    request = Request(url, data=data, headers=headers, method="POST")
    with build_opener(NoRedirect()).open(request, timeout=30) as response:
        if not 200 <= response.status < 300:
            raise ValueError("HTTP " + str(response.status))
        sys.stdout.buffer.write(response.read())
except HTTPError as error:
    print("HTTP " + str(error.code) + ": " + error.read().decode("utf-8", errors="replace"), file=sys.stderr)
    sys.exit(1)
except (ValueError, URLError, OSError) as error:
    print(str(error), file=sys.stderr)
    sys.exit(1)
예제 다운로드
Node.js
// Node.js 18+. Run on your server, never in a browser.
const env = name => {
  const result = process.env[name];
  if (!result) throw new Error(`Set ${name}`);
  return result;
};
try {
  let path = "/v1/invoices";

  const url = new URL(path, "https://api.cryptanio.com");

  const headers = {
    "Authorization": "Bearer " + env("CRYPTANIO_API_KEY"),
    "Accept": "application/json",
    "Content-Type": "application/json",
    "Idempotency-Key": env("CRYPTANIO_OPERATION_ID"),
  };
  const body = {
    "project": "2002",
    "invoice_currency": "USD",
    "invoice_amount": "12.50",
    "reference": "order-42"
  };
  body["project"] = env("CRYPTANIO_PROJECT_ID");
  const response = await fetch(url, {
    method: "POST", headers, redirect: "manual",
    signal: AbortSignal.timeout(30_000), body: JSON.stringify(body),
  });
  if (!response.ok) throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  if (response.body) {
    for await (const chunk of response.body) process.stdout.write(chunk);
  }
} catch (error) {
  console.error(error.message);
  process.exitCode = 1;
}
예제 다운로드

응답 및 오류

201 성공 응답.
필드유형필수설명
checkout_urlstring아니요Cryptanio가 제공하는 결제 페이지입니다. 결제자가 방법을 선택하는 청구서의 생성과 재시도는 결제가 감지될 때까지 방법을 고를 수 있는 대화형 접근 링크를 반환합니다. 고정 방법 생성과 모든 GET 및 목록은 별도의 읽기 전용 링크를 반환합니다. 두 링크 모두 지정한 결제자에게만 공유하세요. 계정이나 API 키에 대한 접근 권한은 부여하지 않습니다. 브라우저 리디렉션이 아닌 청구서 API 또는 검증된 웹훅으로 결제를 확인하세요.
uri
idstring예불투명 식별자입니다. 문자열로 유지하세요.
minLength: 1
statusstring예pending은 결제 대기, seen은 감지됨, partial은 일부 결제, paid는 정산 완료입니다. underpaid/overpaid/late는 판단이 필요하며 expired는 기한 만료, canceled는 취소입니다.
pending, seen, paid, underpaid, partial, overpaid, expired, late, canceled
project_idstring예불투명 식별자입니다. 문자열로 유지하세요.
minLength: 1
referencestring아니요주문 참조입니다.
customerobject아니요
productobject아니요
payerobject아니요
metadataobject아니요최대 20쌍, JSON 8192바이트까지 허용됩니다. 비밀 값을 포함하지 마세요.
invoice_currencystring아니요주문 견적 통화입니다.
invoice_amountstring아니요정확한 소수 금액 문자열입니다. 부동 소수점을 사용하지 마세요.
pattern: ^[0-9]+(?:\.[0-9]+)?$
chainstring예네트워크 코드입니다.
assetstring예결제 자산입니다.
addressstring예결제 주소입니다.
payment_routeobject아니요자동 소스가 tag, memo, TON comment 또는 Solana Pay reference를 발급하면 블록체인 결제 식별값이 필수입니다. 수신 주소와 함께 보관하세요. 판매자의 주문 참조는 별도 필드입니다.
payment_uristring아니요수신자, 정확한 금액, 지원 토큰의 mint 및 필수 reference를 포함한 Solana Pay 전송 요청입니다. 결제 QR에는 수신 주소만 넣지 말고 이 URI를 인코딩하세요.
uri
amountstring | string예구매자가 실제로 보내야 하는 금액입니다. 청구서를 구분하기 위해 요청 금액과 다를 수 있습니다. 방법을 선택하기 전에는 비어 있습니다.
amount_rawstring | string예최소 단위의 정수 금액을 문자열로 표시합니다. 방법을 선택하기 전에는 비어 있습니다.
askedstring | string예처음 요청한 암호화폐 금액입니다. 방법을 선택하기 전에는 비어 있습니다.
decimalsinteger예자산의 소수 자릿수입니다.
minimum: 0
tolerancestring아니요최소 단위의 허용 오차이며 request.tolerance와 다릅니다.
pattern: ^[0-9]+$
sandboxboolean예테스트 청구서는 실제 블록체인 결제를 입증하지 않습니다.
needs_decisionboolean아니요부족 결제, 초과 결제 또는 지연 결제는 판단이 필요합니다.
paidstring아니요최소 단위의 수신 금액입니다.
pattern: ^[0-9]+$
tx_idstring아니요결제 트랜잭션 식별자입니다.
paid_atstring아니요RFC 3339 형식의 UTC 날짜 및 시간입니다.
date-time
expires_atstring예RFC 3339 형식의 UTC 날짜 및 시간입니다.
date-time
created_atstring예RFC 3339 형식의 UTC 날짜 및 시간입니다.
date-time
201 application/json
{
  "id": "2100",
  "status": "pending",
  "project_id": "2002",
  "reference": "order-42",
  "chain": "ethereum",
  "asset": "USDC",
  "address": "0x52908400098527886E0F7030069857D2E4169EE7",
  "amount": "12.5",
  "amount_raw": "12500000",
  "asked": "12.5",
  "decimals": 6,
  "sandbox": true,
  "expires_at": "2026-10-06T11:00:00Z",
  "created_at": "2026-10-06T10:00:00Z"
}
400 잘못된 요청(bad_request, unsupported_asset).
필드유형필수설명
errorobject예
400 application/json
{
  "error": {
    "code": "forbidden",
    "message": "this API key is read-only"
  }
}
401 유효한 활성 API 키가 없습니다(unauthorized).
필드유형필수설명
errorobject예
401 application/json
{
  "error": {
    "code": "forbidden",
    "message": "this API key is read-only"
  }
}
403 키가 작업, 프로젝트, 서비스 또는 IP를 허용하지 않거나 이메일이 확인되지 않았습니다.
필드유형필수설명
errorobject예
403 application/json
{
  "error": {
    "code": "forbidden",
    "message": "this API key is read-only"
  }
}
409 상태 충돌, 재시도 매개변수 충돌 또는 결제 리소스 한도(conflict, limit_reached, service_inactive).
필드유형필수설명
errorobject예
409 application/json
{
  "error": {
    "code": "forbidden",
    "message": "this API key is read-only"
  }
}
429 요청이 너무 많습니다(rate_limited). Retry-After 이후 재시도하세요.
필드유형필수설명
errorobject예
429 application/json
{
  "error": {
    "code": "forbidden",
    "message": "this API key is read-only"
  }
}
500 내부 오류(internal).
필드유형필수설명
errorobject예
500 application/json
{
  "error": {
    "code": "forbidden",
    "message": "this API key is read-only"
  }
}
503 일시적 사용 불가(unavailable). 점진적 대기로 재시도하세요.
필드유형필수설명
errorobject예
503 application/json
{
  "error": {
    "code": "forbidden",
    "message": "this API key is read-only"
  }
}

오류 처리 및 안전한 재시도

중첩 객체

Invoice

필드유형필수설명
checkout_urlstring아니요Cryptanio가 제공하는 결제 페이지입니다. 결제자가 방법을 선택하는 청구서의 생성과 재시도는 결제가 감지될 때까지 방법을 고를 수 있는 대화형 접근 링크를 반환합니다. 고정 방법 생성과 모든 GET 및 목록은 별도의 읽기 전용 링크를 반환합니다. 두 링크 모두 지정한 결제자에게만 공유하세요. 계정이나 API 키에 대한 접근 권한은 부여하지 않습니다. 브라우저 리디렉션이 아닌 청구서 API 또는 검증된 웹훅으로 결제를 확인하세요.
uri
idstring예불투명 식별자입니다. 문자열로 유지하세요.
minLength: 1
statusstring예pending은 결제 대기, seen은 감지됨, partial은 일부 결제, paid는 정산 완료입니다. underpaid/overpaid/late는 판단이 필요하며 expired는 기한 만료, canceled는 취소입니다.
pending, seen, paid, underpaid, partial, overpaid, expired, late, canceled
project_idstring예불투명 식별자입니다. 문자열로 유지하세요.
minLength: 1
referencestring아니요주문 참조입니다.
customerobject아니요
productobject아니요
payerobject아니요
metadataobject아니요최대 20쌍, JSON 8192바이트까지 허용됩니다. 비밀 값을 포함하지 마세요.
invoice_currencystring아니요주문 견적 통화입니다.
invoice_amountstring아니요정확한 소수 금액 문자열입니다. 부동 소수점을 사용하지 마세요.
pattern: ^[0-9]+(?:\.[0-9]+)?$
chainstring예네트워크 코드입니다.
assetstring예결제 자산입니다.
addressstring예결제 주소입니다.
payment_routeobject아니요자동 소스가 tag, memo, TON comment 또는 Solana Pay reference를 발급하면 블록체인 결제 식별값이 필수입니다. 수신 주소와 함께 보관하세요. 판매자의 주문 참조는 별도 필드입니다.
payment_uristring아니요수신자, 정확한 금액, 지원 토큰의 mint 및 필수 reference를 포함한 Solana Pay 전송 요청입니다. 결제 QR에는 수신 주소만 넣지 말고 이 URI를 인코딩하세요.
uri
amountstring | string예구매자가 실제로 보내야 하는 금액입니다. 청구서를 구분하기 위해 요청 금액과 다를 수 있습니다. 방법을 선택하기 전에는 비어 있습니다.
amount_rawstring | string예최소 단위의 정수 금액을 문자열로 표시합니다. 방법을 선택하기 전에는 비어 있습니다.
askedstring | string예처음 요청한 암호화폐 금액입니다. 방법을 선택하기 전에는 비어 있습니다.
decimalsinteger예자산의 소수 자릿수입니다.
minimum: 0
tolerancestring아니요최소 단위의 허용 오차이며 request.tolerance와 다릅니다.
pattern: ^[0-9]+$
sandboxboolean예테스트 청구서는 실제 블록체인 결제를 입증하지 않습니다.
needs_decisionboolean아니요부족 결제, 초과 결제 또는 지연 결제는 판단이 필요합니다.
paidstring아니요최소 단위의 수신 금액입니다.
pattern: ^[0-9]+$
tx_idstring아니요결제 트랜잭션 식별자입니다.
paid_atstring아니요RFC 3339 형식의 UTC 날짜 및 시간입니다.
date-time
expires_atstring예RFC 3339 형식의 UTC 날짜 및 시간입니다.
date-time
created_atstring예RFC 3339 형식의 UTC 날짜 및 시간입니다.
date-time
ID

불투명 식별자입니다. 형식은 보장되지 않으므로 숫자로 변환하지 마세요.

string 불투명 식별자입니다. 형식은 보장되지 않으며 숫자로 변환하지 마세요.

InvoiceStatus

pending은 결제 대기, seen은 감지됨, partial은 일부 결제, paid는 정산 완료입니다. underpaid/overpaid/late는 판단이 필요하며 expired는 기한 만료, canceled는 취소입니다.

string pending은 결제 대기, seen은 감지됨, partial은 일부 결제, paid는 정산 완료입니다. underpaid/overpaid/late는 판단이 필요하며 expired는 기한 만료, canceled는 취소입니다.

Customer

필드유형필수설명
idstring예귀하의 시스템에서 사용하는 고객 식별자입니다.
maxLength: 120
Product

필드유형필수설명
idstring아니요사용자 시스템의 제품 식별자입니다.
maxLength: 120
namestring아니요제품 이름입니다.
maxLength: 200
quantityinteger아니요수량입니다.
minimum: 1; maximum: 1000000
Payer

필드유형필수설명
commentstring예결제자 의견입니다.
maxLength: 500
InvoiceMetadata

최대 20쌍, JSON 8192바이트까지 허용됩니다. 비밀 값을 포함하지 마세요.

object 최대 20쌍, JSON 8192바이트까지 허용됩니다. 비밀 값을 포함하지 마세요.

Decimal

string

RawAmount

string

InvoiceRequest

필드유형필수설명
projectstring아니요Payments 프로젝트 ID입니다. 명시적 선택을 권장합니다. 프로젝트 한정 키는 해당 프로젝트를 사용합니다.
chainstring아니요네트워크 코드입니다.
minLength: 1
assetstring아니요지원 결제 자산: native, 기호 또는 알려진 식별자입니다. 허용 자산은 네트워크에 따라 다르며 생략하면 native를 선택합니다.
기본값: native
amountstring아니요자산 단위의 양수 암호화폐 금액입니다. 정밀도는 자산의 소수 자릿수를 넘을 수 없습니다.
pattern: ^[0-9]+(?:\.[0-9]+)?$
referencestring아니요주문 참조이며 Idempotency-Key를 대체하지 않습니다.
maxLength: 120
addressstring아니요프로젝트 결제 주소 풀에서 선택하는 주소입니다. 생략하면 서비스가 선택합니다.
tolerancestring아니요자산 단위의 허용 부족액으로 amount보다 엄격하게 작아야 합니다. 허용 부족액이 0이면 생략하세요.
pattern: ^[0-9]+(?:\.[0-9]+)?$
customerobject아니요
productobject아니요
payerobject아니요
metadataobject아니요최대 20쌍, JSON 8192바이트까지 허용됩니다. 비밀 값을 포함하지 마세요.
invoice_currencystring아니요3글자 주문 견적 통화이며 invoice_amount와 함께 사용해야 합니다.
pattern: ^[A-Za-z]{3}$
invoice_amountstring아니요invoice_currency로 표시한 양수 주문 금액입니다. chain과 amount가 있으면 판매자가 저장한 스냅샷입니다. 결제 정보가 없으면 결제자가 선택한 자산의 금액을 계산하는 고정 청구 금액입니다.
maxLength: 80; pattern: ^[0-9]+(?:\.[0-9]+)?$
expires_ininteger아니요결제 정보 발급에 성공한 시점부터 시작하는 분 단위 결제 기한입니다. 생략하거나 0이면 프로젝트 정책(기본값 60)을 사용하며, 최댓값은 10080입니다. 기존 고정 방법 요청은 음수도 생략으로 처리하지만, 결제자가 방법을 선택하는 결제에서는 음수를 거부합니다.
기본값: 60; maximum: 10080
Error

필드유형필수설명
errorobject예