충전 확인

은행 입금 알림을 전달해 대기 중인 충전 요청을 자동 승인하거나, 요청 ID로 직접 처리합니다.

POSThttps://bank.apiacc.com/confirm

action에 따라 입금 알림을 자동 매칭하거나 지정한 충전 요청을 승인 또는 거절합니다.

은행 알림 원문 전송

아이폰 단축어와 같은 은행 알림 자동화에서는 action을 auto로 지정하고, 수신한 입금 알림 전체를 message에 그대로 전달하세요. 서버가 금액과 입금자명을 추출해 가장 최근의 일치하는 대기 요청을 승인합니다.

요청 본문

필드타입필수제한예시
action

처리 방식입니다. 은행 알림 원문은 auto를 사용합니다.

string필수auto, approve, reject"auto"
message

action이 auto일 때 전달하는 은행 입금 알림 원문입니다.

string선택"[카카오뱅크] 입금 홍길동 10,000원 잔액 123,456원"
amount

message 대신 파싱된 값을 보낼 때 사용하는 입금 금액입니다.

integer선택10000
depositor

message 대신 파싱된 값을 보낼 때 사용하는 입금자명입니다.

string선택"홍길동"
id

action이 approve 또는 reject일 때 필요한 충전 요청 ID입니다.

string선택"chg_example123"
reason

action이 reject일 때 저장할 거절 사유입니다.

string선택"입금 정보 불일치"
curl -X POST "https://bank.apiacc.com/confirm" \
  -H "Authorization: Bearer $BANK_API_KEY" \
  -H "Content-Type: application/json" \
  --max-time 10 \
  -d '{
    "action": "auto",
    "message": "[카카오뱅크] 입금 홍길동 10,000원 잔액 123,456원"
  }'

응답

200자동 매칭 및 충전 성공

{
  "charge": {
    "id": "chg_example123",
    "amount": 10000,
    "depositor": "홍길동",
    "platform": "my-service",
    "ref": "order_1234",
    "status": "approved",
    "requested_at": "2026-08-15T03:00:00Z",
    "processed_at": "2026-08-15T03:01:12Z",
    "expires_at": "2026-08-15T03:03:00Z"
  },
  "result": {
    "requester_name": "홍길동",
    "amount": 10000,
    "status": "충전성공"
  }
}

일치하는 대기 요청보다 입금 알림이 먼저 도착하면 HTTP 202와 함께 선입금 상태가 반환됩니다.

202선입금 대기

{
  "status": "waiting_for_request",
  "expires_in": 60,
  "amount": 10000,
  "depositor": "홍길동",
  "result": {
    "requester_name": "홍길동",
    "amount": 10000,
    "status": "선입금"
  }
}

원문에서 금액이나 입금자명을 추출하지 못한 경우 HTTP 200으로 알수없음 결과를 반환합니다.

200알림 파싱 실패

{
  "status": "unknown",
  "error": "invalid_bank_notification",
  "message": "failed to parse depositor from message",
  "result": {
    "requester_name": "",
    "amount": 0,
    "status": "알수없음"
  }
}

동일 알림 재전송 금지

같은 은행 알림을 반복 전송하지 마세요. 네트워크 재시도 로직을 사용하는 경우 응답을 받은 요청을 다시 보내지 않도록 처리해야 합니다.

주요 오류

상태error
400invalid_action
400missing_id
400invalid_auto_confirm
404charge_not_found
409prior_deposit_matching_disabled
429rate_limit_exceeded