단계는 두 가지로 나뉩니다. 새 OpenRouter 결제 링크를 만드는 일과 그 링크를 결제하는 일입니다. CLI는 기존 링크의 결제를 자동화할 수 있지만 다음 OpenRouter top-up 링크를 대신 만들어 주지는 않습니다.
이 페이지는 그 제약을 설명하고, 이어서 실제로 통하는 대안을 다룹니다. ROZO Checkout은 독립적인 서드파티 checkout이며 OpenRouter와 제휴 관계가 없습니다.

결제 링크 생성과 결제를 분리하기
auto top-up은 미리 저장해 둔 결제 수단에 청구하는 방식으로 작동합니다. 여러분이 그 자리에 없어도 누군가가 여러분의 돈을 움직일 수 있어야 한다는 뜻입니다. 카드라면 저장된 카드가 바로 그 목적을 위해 존재합니다.
self-custody 지갑은 결제마다 대화식으로 서명할 수도 있고, 사용을 허가한 키로 로컬 소프트웨어가 서명하게 할 수도 있습니다. self-custody라고 해서 자동화가 원천적으로 불가능한 것은 아닙니다.
무인 결제를 하려면 서명자에게 지출 권한이 있어야 합니다. 예를 들어 선택 사항인 CLI --send 모드에서 쓰는 전용 로컬 핫월렛이 그렇습니다. 이는 커스터디 서비스가 잔액을 보관하는 것이나, 토큰 허용 한도로 컨트랙트의 지출을 허용하는 것과는 다릅니다.
서명자를 승인해도 결제 링크 생성 문제는 해결되지 않습니다. cron 작업이 새 OpenRouter 청구서를 만들 수 있다고 가정하지 말고 이 단계를 명시적으로 다루세요.
잔액이 0이 되면 실제로 무엇이 깨지나
구체적으로 볼 필요가 있습니다. 실패가 우아하지 않기 때문입니다.
오래 걸리는 작업은 얌전히 멈춰서 자금을 기다려 주지 않습니다. 요청이 실패하기 시작하고, 클라이언트가 에러를 어떻게 처리하느냐에 따라 실패가 몰아서 터지거나, 배치가 절반만 끝나거나, 빈 잔액을 상대로 시간만 태우는 재시도 루프에 빠집니다. 사람이 알아차리고 직접 계정에 자금을 넣기 전까지는 모든 것이 망가진 채로 있습니다.
비용은 top-up 자체인 경우가 드뭅니다. 다시 처음부터 돌려야 하는 실행, 그리고 잔액이 0이 된 순간부터 여러분이 그 사실을 알아차리기까지의 시간이 진짜 비용입니다.
실제로 통하는 대안
어느 것도 기발하지 않습니다. 이 질문이 떠오르는 빈도 자체를 줄여 주기 때문에 통하는 것입니다.
- 최소 금액이 아니라 소진 속도에 맞춰 버퍼를 잡으세요. 많이 쓰는 하루가 어느 정도 든다면, 그 며칠치를 잔액에 두세요. 최소 금액을 반복해서 채우는 것보다, 더 많이 더 드물게 충전하는 편이 무조건 낫습니다.
- 긴 실행 도중이 아니라 시작 전에 충전하세요. 배치가 비싸겠다는 걸 아는 그 순간이 자금을 넣기에 가장 저렴한 순간입니다.
- 이미 보고 있는 곳에서 잔액을 보세요. 한 번도 보지 않는 숫자는 결국 여러분을 놀라게 하는 숫자입니다. 어차피 지나다니는 자리에 두세요.
- 버퍼 전략이 굴러갈 만큼 top-up을 빠르게 유지하세요. 이 부분은 저희가 도울 수 있습니다. 링크를 붙여넣고 지갑에서 승인하면, 크레딧은 보통 결제가 온체인에서 확인된 뒤 약 2분 후에 들어옵니다. 수동이 괴로운 건 수동이 느릴 때뿐입니다.
CLI나 cron으로 자동화하기
OpenRouter에는 예전에 스크립트로 호출할 수 있는 암호화폐 크레딧 API가 있었습니다. 2026년 10월 기준 이 엔드포인트(POST /api/v1/credits/coinbase)는 410 Gone을 반환하므로, 결제 링크 자체는 OpenRouter의 Credits 페이지에서 만들어야 합니다.
링크만 있으면 결제는 스크립트로 처리할 수 있습니다. ROZO Checkout CLI는 명령 하나로 견적과 결제를 처리하며, 에이전트나 cron이 실행할 수 있습니다.
- npx @rozoai/checkout quote <link>
- npx @rozoai/checkout pay <link> --with usdt-solana --yes
기본 경로는 개인 키와 환경 변수가 필요 없습니다. 일회용 입금 주문을 만들고 주소와 정확한 금액을 출력한 뒤 청구서가 정산될 때까지 기다립니다. 코인은 여전히 본인 지갑에서 보내므로 위에서 말한 셀프 커스터디 원칙은 그대로입니다. 완전 무인으로 돌리려면 --send 옵션이 EVM 체인이나 Solana에서 로컬 키로 서명합니다. 로컬 서명자는 그 자금을 쓸 수 있으므로, 잔액이 적은 전용 핫월렛을 쓰세요.
결제를 확인하려면 npx @rozoai/checkout receipt <rozoPaymentId> --json을 실행하세요. Coinbase가 청구서 결제 완료를 보고할 때만 종료 코드 0을 반환합니다. v3에서는 CAPTURE_SUCCEEDED를 뜻합니다. 종료 코드 3은 처리 중이거나 알 수 없음을, 종료 코드 1은 미결제 만료 또는 사람의 검토 필요를 뜻합니다. status 명령의 종료 코드 0은 확인이 실행되었다는 뜻일 뿐이니 state, paymentOutcome, nextAction을 읽으세요. 크레딧은 OpenRouter에서 별도로 확인하세요.
현재 명령어와 지원되는 두 가지 Coinbase URL 형식(payment link, payment session)은 ROZO Checkout CLI README를 참고하세요. AI 에이전트 가이드에서 CLI, MCP 서버, Claude Code skill을 다룹니다.
그래도 완전 자동화를 원한다면
결제를 어떻게 승인할지 정하고, 새 결제 링크를 어떻게 얻을지는 따로 결정하세요.
로컬 서명은 커스터디 잔액 없이 준비된 결제를 자동화할 수 있습니다. 그 서명자가 쓸 수 있는 자금을 제한하고, 권한을 주기 전에 견적을 확인하고, 재시도 전에 receipt를 확인하세요. 커스터디 서비스를 쓴다면 접근, 출금, 환불 조건을 검토하세요.
에이전트를 돌리는 대부분의 사람에게는 버퍼 더하기 30초짜리 수동 top-up이, 다른 곳에 잔액을 상시로 두는 것보다 운영 리스크가 더 작다는 결론이 나옵니다.