부족 입금은 미수 잔액을 남기고, 초과 입금은 처리해야 할 초과 수령액을 만듭니다. 어느 경우든 즉흥적으로 환불하거나 다시 전액을 결제해 달라고 요청해서는 안 됩니다. 먼저 실제 입금 내역을 확인하고 구매 기록과 연결한 뒤, 주문을 이행할지와 차액을 어떻게 정산할지를 각각 판단해야 합니다.
이 지침은 자산, 네트워크, 수신 주소가 모두 올바르다는 전제에서 출발합니다. 이 중 하나라도 일치하지 않으면 잘못된 네트워크 입금 사고 대응 지침을 참고하세요. 여기서는 다른 조건은 일치하지만 금액, 입금 시점 또는 금액 배정에 문제가 있는 경우를 다룹니다.
아래 통제 항목은 판매자 운영과 시스템 구현을 위한 권고 사항이며, Yolfi가 자동으로 제공하는 기능 목록이 아닙니다. 예시는 설명을 위한 것으로 실제 고객 사고 사례가 아닙니다.
처리 방안을 정하기 전에 금액부터 확정하기
원래 결제 요청의 주문 참조 번호, 요청한 토큰 수량, 네트워크, 수신 주소, 견적 기준, 만료 규칙을 보존하세요. 고객의 지갑 화면이나 잔액 추정치가 아니라, 독립적으로 검증했고 자체 거래 확정 정책을 충족하는 입금 내역과 비교해야 합니다.
다음 세 가지 금액을 구분해서 관리하세요.
- 요청 금액: 결제 안내에서 요구한 금액입니다.
- 검증된 입금: 실제로 수령했으며 조건이 일치하고 주문에 배정할 수 있는 송금입니다.
- 미해결 잔액: 이전 배정, 고객 적립금 반영, 환불을 적용한 뒤 남은 부족액 또는 초과액입니다.
판매자가 나중에 송금하면서 발생하는 비용을 고객의 결제 금액에서 빼지 마세요. 결제 제공업체 수수료와 회계 조정은 실제 입금 증빙과 분리해서 관리해야 합니다.
거래소 출금은 거래소가 수수료를 차감하면 고객이 의도한 금액보다 적게 도착할 수 있습니다. 추측하지 말고 입금 기록을 확인하세요. 반면 Ethereum에서 일반적인 USDC 또는 USDT 송금을 할 때는 USDC나 USDT를 차감해서 Ethereum 가스비를 내는 것이 아닙니다. Ethereum 가스비는 ETH로 지불합니다. 가스비를 충당한다며 임의로 추산한 스테이블코인 수량을 더 보내라고 안내하지 마세요.
구현 시에는 검증된 자산의 소수 자릿수를 기준으로 최소 단위의 정확한 정수나 정확한 십진수를 비교하세요. 이진 부동소수점 비교를 피하고, 결제 페이지에 표시되는 소수 자릿수가 적다는 이유만으로 부족액을 반올림해 없애서는 안 됩니다.
금액 예외 상황별 판단표
내부 정책의 기본 틀로 활용하세요. 아래 항목은 업무상 분류이며 Yolfi API 상태가 아닙니다.
| 검증된 상황 | 주문 이행 판단 | 금액 해결 조치 | 종료 전 통제 항목 |
|---|---|---|---|
| 적용되는 기한 규칙 안에 전액 수령 | 거래 확정 요건을 충족한 뒤 한 번만 이행 | 입금을 주문에 배정 | 기존 배정과 이행 내역 확인 |
| 요청 금액보다 적게 수령 | 승인된 감면이 없으면 보류 | 추적 가능한 차액 요청, 감면 또는 환불 승인 | 남은 잔액과 담당자 기록 |
| 요청 금액보다 많이 수령 | 결제 수락 요건을 충족할 때만 한 번 이행 | 초과액을 검토해 환불 또는 합의한 고객 적립금으로 처리 | 주문 배정액과 초과액 분리 |
| 여러 송금의 합계가 필요 금액에 도달 | 합산이 허용되고 검증될 때까지 보류 | 적격 송금을 각각 한 번만 배정 | 제공업체가 결제를 합산한다고 가정하지 않기 |
| 만료 후 전액 도착 | 시점, 견적, 주문 이행 가능 여부 검토 | 정책에 따라 수락하거나 다른 해결책에 합의 | 연결된 대체 결제 요청 확인 |
| 원래 요청과 대체 요청 모두에 입금 | 절대 두 번 이행하지 않기 | 두 입금을 대사하고 잉여 금액 해결 | 주문을 잠가 중복 작업 방지 |
모든 예외 상황에 담당자와 다음 진행 상황 안내 기한을 지정하세요. 고객 지원팀과 재무팀이 서로 상대 팀이 처리한다고 생각해서 입금이 미배정 상태로 남아서는 안 됩니다.
부족 입금: 승인된 다음 조치만 요청하기
요청 금액은 100 USDC인데 검증된 입금은 98 USDC라고 가정해 보겠습니다. 부족액은 2 USDC입니다. 원래 입금 기록을 보존하고, 100을 받은 것으로 표시한 새 기록으로 몰래 대체하지 마세요.
다음 중 하나를 선택하고 문서로 남기세요.
- 차액 수금. 연동 시스템이 별도 입금을 대사할 수 있는지 확인합니다. 같은 주문에 연결하고 현재 유효한 결제 안내를 포함해, 미지급 금액에 대한 추적 가능한 요청을 발행합니다.
- 감면 승인. 권한이 있는 담당자가 면제 금액과 회계 처리 방식을 기록합니다. 판매자의 감면이 결제 제공업체의 입금 인정 규칙을 바꾼다고 설명해서는 안 됩니다.
- 부분 입금 반환. 별도의 출금 거래를 실행하기 전에 환불 조건과 수신 주소에 합의합니다.
Yolfi의 부분 결제 관련 자주 묻는 질문은 불완전한 결제는 확정되지 않으며 고객이 판매자에게 문의해야 한다고 설명합니다. 같은 주소로 차액을 보내는 것도 판매자 시스템이 지원하는 경우에만 가능합니다. 따라서 차액을 보내면 원래 Yolfi 결제 요청이 자동으로 완료된다고 약속하지 마세요.
분할 입금 처리가 검증되지 않았다면 추가 송금을 안내하기 전에 책임자에게 검토를 요청하세요. 첫 부분 입금을 보유한 상태에서 다시 전액을 요구하면 충분히 예상할 수 있는 초과 입금이 발생합니다.
소액 부족분 정책은 문제가 생기기 전에 정하세요. 예를 들어 승인 한도, 적용 가능한 구매, 감사용 사유를 정의할 수 있습니다. 보편적으로 적용되는 허용 비율은 없습니다. BTCPay Server는 자체적으로 설정할 수 있는 부족 입금 허용 범위를 문서화하고 있지만, 이것이 Yolfi에도 같은 설정이 있다는 근거는 아닙니다.
초과 입금: 판매 대금과 초과액 분리하기
고객이 100 USDT를 내야 하는데 105 USDT를 보냈다고 가정하겠습니다. 다른 결제 수락 요건을 충족한다면 100 USDT는 구매에 배정하고 5 USDT는 미해결 초과액으로 추적하세요. 차액을 자동으로 추가 매출이나 추가 상품 이용 권한으로 처리해서는 안 됩니다.
환불 또는 명시적으로 합의한 고객 적립금 등, 이용 가능하고 정책에 맞는 해결책 중에서 고객이 선택하도록 하세요. 합의 전에 적용되는 수수료를 설명하고 현지 소비자 보호 의무와 회계 의무를 확인해야 합니다. 소액이라는 이유로 알리지 않고 자금을 보유해도 되는 것은 아닙니다.
한 번에 많이 보낸 송금과 중복 송금도 구별하세요. 100 USDT짜리 구매 한 건에 100 USDT 송금이 두 건 있다면, 이는 수정된 입금 한 건이 아니라 서로 다른 입금 두 건입니다. 두 거래 기록을 모두 보존하고 주문은 한 번만 이행하며, 추가 100 USDT는 별도로 검토하세요.
지연 입금: 만료됐다고 받은 자금의 처리가 끝나는 것은 아님
결제 요청의 마감 시각, 송금 감지 시각, 거래 확정 시각을 각각 기록하세요. 만료 전에 감지됐지만 이후에 확정된 결제는 견적이 만료된 뒤 처음 수령한 송금과 다릅니다. 문서화된 규칙을 적용하고 공통 유예 기간이 있다고 임의로 가정하지 마세요.
지연 입금은 다음 사항을 검토하세요.
- 원래 가격이 여전히 유효한지
- 재고, 제공 여력 또는 접근 권한을 아직 제공할 수 있는지
- 다른 결제 요청으로 같은 주문의 대금이 이미 지불됐는지
- 환불, 고객 적립금 또는 감면이 이미 승인됐는지
100 USDC처럼 토큰 단위로 표시한 요청과 법정화폐 금액을 암호화폐로 환산한 요청은 지연 입금 정책이 같을 필요가 없습니다. 원래 견적을 보존하고 새 견적이 필요하면 공개적으로 안내하세요. 과거 가격을 소급해 바꾸어서는 안 됩니다.
대체 결제 요청이 필요하다면 기록상 원래 주문에 연결하고, 두 요청 모두에 결제하지 않도록 고객에게 알리세요. 이전 결제 시도도 계속 모니터링해야 합니다. 고객 문의를 종료해도 이미 제출된 송금이 나중에 확정되는 것까지 막을 수는 없습니다.
두 번째 사고를 만들지 않고 안전하게 환불하기
환불은 별도의 출금 결제이며 기존 입금 거래를 수정하는 작업이 아닙니다. Yolfi의 비수탁형 서비스 설명은 결제 금액이 판매자가 설정한 지갑으로 직접 들어간다고 안내합니다. Yolfi가 환불 가능한 잔액을 보관하거나 초과액을 자동으로 반환한다고 가정하지 마세요.
환불을 승인하기 전에 다음을 확인하세요.
- 원래 입금, 고객의 요청 내용, 남은 환불 가능 금액을 확인합니다.
- 기존 고객 연락 경로를 통해 요청자의 신원을 확인합니다.
- 환불할 자산, 네트워크, 수신 주소를 받아 검증합니다. 거래 발신 주소로 무조건 반환하지 마세요. 거래소나 다른 중개자의 주소일 수 있습니다.
- 적용되는 의무를 준수하면서 총 환불액, 수수료 처리, 예상 순수령액에 합의합니다.
- 지갑 보안 정책에 따라 승인을 받고 사유와 승인자를 기록합니다.
- 출금 거래 참조 번호를 기록하고 결과를 검증한 뒤 환불을 완료로 표시합니다.
시드 구문이나 개인 키를 요청해서는 안 됩니다. 환불 제출이 시간 초과됐다면 다시 보내기 전에 거래 상태를 조사하세요. 응답이 불확실하다고 해서 결제 거래가 네트워크에 전파되지 않았다는 뜻은 아닙니다.
모든 해결 작업에 멱등성 적용하기
멱등성은 재시도로 같은 업무 작업이 반복 실행되지 않는다는 뜻입니다. Stripe의 Webhook 안내는 Stripe에서 이벤트가 중복될 수 있고 순서가 보장되지 않음을 설명합니다. 유용한 구현 참고 자료이지만 Yolfi의 전달 보장 조건을 설명하는 것은 아닙니다.
자체 연동에는 다음 통제를 적용하세요.
- 제공업체가 문서화한 검증 절차로 알림의 진위를 확인합니다.
- 수신 이벤트를 영구 저장하고 문서화된 식별자로 중복을 제거합니다.
- 네트워크와 거래 참조 번호로 각 입금을 식별합니다. 한 거래에 여러 관련 송금이 있으면 송금 또는 이벤트 인덱스도 포함합니다.
- 데이터베이스 제약 조건이나 동등한 트랜잭션 통제로 입금당 한 번의 배정, 주문당 한 번의 이행을 강제합니다.
- 승인된 환불 작업을 발송 전에 독점적으로 확보해 동시 작업자가 두 번 송금하지 못하게 합니다.
반복된 Webhook은 또 다른 결제가 아닙니다. 두 번째 유효한 송금은 별도의 입금이지만, 두 번째 발송을 허용하는 것은 아닙니다. 예외 상황을 종료하기 전에 지갑 증빙과 업무 기록을 모두 대조해 대사하세요.
자주 묻는 질문
아주 적은 부족액은 받아들여야 하나요?
판매자가 승인한 정책 안에서만 가능합니다. 감면을 별도로 기록하고 결제가 어떻게 인정되는지 확인하세요. 자동 허용 범위가 있다고 가정해서는 안 됩니다.
초과 입금은 자동 환불해야 하나요?
자금 소유권, 수신 주소, 금액, 중복 방지 통제가 검증되지 않았다면 안 됩니다. 테스트와 승인을 거친 절차가 안전하게 처리할 수 있는 경우가 아니라면 초과액을 검토 대기 상태로 두세요.
두 번의 부분 송금으로 주문 하나를 결제할 수 있나요?
정책이 허용하면 자체 기록에서 여러 입금을 한 주문에 배정할 수 있습니다. 다만 결제 제공업체가 이들을 합산해 인정하는지는 별도로 검증해야 합니다.
결론: 문의뿐 아니라 잔액까지 해결하기
명확한 Yolfi 결제 링크에서 시작하고, 결제 기록과 함께 판매자 측 예외 관리 대장을 유지하세요. 주문 금액 배정, 이행 결정, 남은 잔액, 환불이나 고객 적립금이 모두 일치할 때만 사안을 종료해야 합니다. 그래야 작은 금액 불일치가 추가 결제, 중복 배송 또는 위험한 환불로 이어지는 것을 막을 수 있습니다.
