본문으로 건너뛰기

지급대행 처리하기

가맹점에서 발생한 매출에 대하여 실제 판매자에게 정산이 필요한 경우, 나이스정보통신에서 가맹점을 대신하여 정산금을 지급하는 서비스입니다.


1. 전체 Flow

  • 서브몰(판매자)의 정보를 먼저 등록하는 과정이 필요합니다.
    • 은행 시스템 전환 시간인 23:00~01:00 에는 서브몰 등록이 불가합니다.
  • 지급을 요청하기 전 잔액이 충분한지 확인합니다.
  • 계좌에 남은 잔액 내에서 원하는 서브몰을 설정하여 지급 요청을 진행합니다.
    • 지급 요청에 대한 취소 처리도 가능하며 지급 당일(영업일) 기준 오전 10:30 이내로 처리가 완료되어야 합니다.
  • 요청된 내용에 따라 나이스정보통신에서 서브몰로 지급을 대행 처리합니다.
    • 지급 처리 시간은 11:00~14:00 이내에 이루어집니다.
  • 지급 요청 후 정상 여부를 확인하기 위해 지급 당일 16:00 이후 결과를 조회할 수 있습니다.

2. 연동 전 준비 사항

2.1. 방화벽 설정

  • 프로토콜: HTTPS
  • 연결대상(IP): 121.133.126.34
  • 포트(PORT): 443
  • 연결방향: OUTBOUND
  • 도메인 허용 목록: data.nicepay.co.kr

2.2. 주의 사항

  • 지급대행 서비스는 테스트 계정을 제공하지 않으며, 영업담당자와 협의된 이후 사용 가능합니다.
  • 지급 처리가 완료된 내역에 대하여 원복은 불가합니다. 지급 요청 시 신중하게 처리하시기 바랍니다.
  • 모든 API호출은 server-side에서 처리 될 수 있도록 하고 민감정보가 외부에 노출되지 않도록 주의해야 합니다. API 로깅에 따른 정보 노출의 모든 책임은 가맹점에 있습니다.
  • PG사의 기능 추가 및 서비스 개선에 따라 응답 필드는 사전 고지 없이 추가될 수 있습니다.
    가맹점에서는 아래 표에 기재되지 않은 응답 필드가 추가될 수 있음을 고려하여 연동해야 하며, 추가 필드로 인해 파싱 오류 또는 결과 처리 오류가 발생하지 않도록 구현해야 합니다.
  • 페이프로 서비스(위챗, 알리페이, 페이팔 등)를 이용하는 MID의 경우 지급 요청을 요청 전일 23시 59분까지 진행해야 합니다.

3. API 목록 및 구성

3.1. HTTP Request

  • Method: POST
  • URL: https://data.nicepay.co.kr/om/api
  • Content-Type: application/json
  • Encoding: UTF-8

3.2. 요청 전문 구성

  • API 데이터 포맷은 요청 전문을 정의한 header와 전달 파라미터를 정의한 body를 조합한 JSON 데이터입니다.
  • header는 요청 전문ID(sid) 및 결과 코드를 정의합니다.
    • 서비스별 sid는 아래 "전문ID(sid) 목록"을 참고하시기 바랍니다.
  • body는 각 전문ID에 대한 요청/응답 값을 정의합니다.
    • body 전문 내에는 가맹점 검증 및 요청 데이터 위변조 방지를 위한 encKey 값이 필수로 존재합니다.
      (encKey 생성 규칙은 아래 "가맹점 인증키(encKey) 생성 규칙" 항목을 참고하시기 바랍니다.)

header 파라미터 명세

필드명크기(byte)필수설명
sid10O전문 ID, 업무별 정의된 ID 입력
trDtm14O요청 전문 생성 일시(YYYYMMDDHHMISS)
gubun1O전문 구분 (S: 요청, R: 응답)
resCode4O결과 코드, 빈 값으로 요청 후 결과 코드 반환 (0000: 성공 / 이외 실패)
resMsg255O결과 메세지, 빈 값으로 요청 후 결과 메세지 반환

전문ID(sid) 목록

sidAPI
0101001잔액조회
0105001서브몰 등록/수정
0102001지급요청
0103001지급취소
0101002결과조회

가맹점 인증키(encKey) 생성 규칙

  • 규칙: hex(sha256(sid + mid + trDtm + 가맹점 Key))
    • sid: 전문ID (7자리)
    • mid: 가맹점ID (10자리)
    • trDtm: 요청 전문 생성 일시 (14자리)
    • 가맹점 Key: 가맹점관리자페이지(https://npg.nicepay.co.kr) 접속 후 가맹점정보->Key관리 매뉴를 통해 확인하실 수 있습니다.

4. 잔액조회 (0101001)

4.1. 요청 파라미터

필드명크기(byte)필수설명
mid10O가맹점 ID
encKey255O가맹점 인증키, 생성 규칙: hex(sha256(sid + mid + trDtm + 가맹점 Key))

4.2. 응답 파라미터

필드명크기(byte)설명
mid10가맹점 ID
remainAmt20총 잔액
last-최근 내역 ("last 하위 파라미터 상세" 항목 참조)

last 하위 파라미터 상세

필드명크기(byte)설명
lastcl2거래구분 (00: 정산대금, 01: 현금입금, 10: 서브몰 지급)
lastAmt20마지막으로 처리한 지급대행 요청 금액
lastDt8처리일자 (YYYYMMDD)

4.3. 예시

요청 예시

아래 예시는 테스트 시 이해를 돕기 위해 임의로 만든 데이터로 요청 및 응답 규격을 확인하기 위한 용도입니다.
예시 데이터를 실제 API 요청에 사용하지 않도록 주의해주세요.

POST /om/api HTTP/1.1
Host: data.nicepay.co.kr
Content-Type: application/json

{
"header": {
"sid": "0101001",
"trDtm": "20190619163525",
"gubun": "S",
"resCode": "",
"resMsg": ""
},
"body": {
"mid": "nictest00m",
"encKey": "4168f1a95b1b9a765ae67500836416bfbca147c8bc8938cb07cee3b0f86d23f4"
}
}

응답 예시

{
"header": {
"sid": "0101001",
"trDtm": "20190619163526",
"gubun": "R",
"resCode": "0000",
"resMsg": ""
},
"body": {
"mid": "nictest00m",
"remainAmt": 77000,
"last": {
"lastDt": "20181123",
"lastAmt": 52000,
"lastCl": "10"
},
"reqInfo": {
"header": {
"sid": "0101001",
"trDtm": "20190619163525",
"gubun": "S",
"resCode": "",
"resMsg": ""
},
"body": {
"mid": "nictest00m",
"encKey": "4168f1a95b1b9a765ae67500836416bfbca147c8bc8938cb07cee3b0f86d23f4"
}
}
}
}


5. 서브몰 등록/수정 (0105001)

5.1. 요청 파라미터

필드명크기(byte)필수설명
mid10O가맹점 ID
subId50O서브몰 ID
subNm50O서브몰명
subCoNo30O사업자번호 (수정 불가)
bankCd3O정산 은행코드
accntNo30O정산 계좌번호
accntNm30O정산 계좌주명
memo100비고
reqType1O요청 구분 (0: 신규 등록, 1: 수정)
encKey255O가맹점 인증키, 생성 규칙: hex(sha256(sid + mid + trDtm + 가맹점 Key))

5.2. 응답 파라미터

필드명크기(byte)설명
mid10가맹점 ID
subId50서브몰 ID
reqType1요청 구분 (0: 신규 등록, 1: 수정)

서브몰 신규 등록 시 주의 사항 (reqType: 0)

  • 신규 등록 시 예금주 조회 로직을 이용하여 bankCd, accntNo, accntNm 정보를 검증합니다. 예금주와 계좌 정보가 불일치하는 경우 오류가 발생합니다.
  • 잘못된 계좌를 등록하여 발생하는 책임은 가맹점에 있습니다.
  • 예금주 조회 API가 필요한 경우 영업담당자를 통해 사전 협의 바랍니다.

서브몰 수정 시 주의 사항 (reqType: 1)

  • 서브몰 수정 요청이 인입되는 경우 mid와 subId를 먼저 검증하며 등록되지 않은 mid, subId로 서브몰 정보 수정 요청이 인입되는 경우 오류가 발생합니다.
  • 수정이 가능한 항목에 대해서는 아래 파라미터를 참고하시기 바랍니다.
    • subNm(서브몰명), bankCd(정산 은행코드), accntNo(정산 은행계좌), accntNm(계좌주명), memo(비고)
  • 수정이 불가능한 항목에 대해서는 신규 동록 요청 시 입력한 정보와 동일한 값으로 요청합니다.

5.3. 예시

요청 예시

아래 예시는 테스트 시 이해를 돕기 위해 임의로 만든 데이터로 요청 및 응답 규격을 확인하기 위한 용도입니다.
예시 데이터를 실제 API 요청에 사용하지 않도록 주의해주세요.

POST /om/api HTTP/1.1
Host: data.nicepay.co.kr
Content-Type: application/json

{
"header": {
"sid": "0105001",
"trDtm": "20190619163525",
"gubun": "S",
"resCode": "",
"resMsg": ""
},
"body": {
"mid": "nictest00m",
"encKey": "b52ccf46cd4335b41073a4dc8a9b5e717b4ad86924f02fc9dad8eedf2a6e617e",
"subId": "1251216623",
"subNm": "테스트22",
"subCoNo": "1268262702",
"accntNm": "테스트",
"bankCd": "034",
"accntNo": "1251252121126",
"memo": "테스트11",
"reqType": "0"
}
}

응답 예시

{
"header": {
"sid": "0105001",
"trDtm": "20190619163528",
"gubun": "R",
"resCode": "0000",
"resMsg": ""
},
"body": {
"mid": "nictest00m",
"subId": "1251216623",
"reqType": "0",
"reqInfo": {
"header": {
"sid": "0105001",
"trDtm": "20190619163525",
"gubun": "S",
"resCode": "",
"resMsg": ""
},
"body": {
"mid": "nictest00m",
"encKey": "b52ccf46cd4335b41073a4dc8a9b5e717b4ad86924f02fc9dad8eedf2a6e617e",
"subId": "1251216623",
"subNm": "테스트22",
"subCoNo": "1268262702",
"accntNm": "테스트",
"bankCd": "034",
"accntNo": "1251252121126",
"memo": "테스트11",
"reqType": "0"
}
}
}
}

6. 지급요청 (0102001)

6.1. 요청 파라미터

필드명크기(byte)필수설명
mid10O가맹점 ID
settlmntDt8O지급일자 (YYYYMMDD), 과거 일자 불가
subId50O서브몰 ID
settlmntAmt14O지급 요청 금액 (숫자만 입력)
dupChkYn1O중복체크여부 (Y: 요청일 기등록건 중복 체크 / N: 중복 허용)
accntDesc30수취인 계좌에 표기될 정보, 미설정 시 가입시점에 등록한 값을 기준으로 처리
(등록된 값은 영업담당자 통해 확인 필요)
encKey255O가맹점 인증키, 생성 규칙: hex(sha256(sid + mid + trDtm + 가맹점 Key))

6.2. 응답 파라미터

필드명크기(byte)설명
mid10가맹점 ID
subId50서브몰 ID
settlmntDt8지급일자 (YYYYMMDD)
settlmntAmt14지급 요청 금액
dupChkYn1중복체크여부
seq20지급 요청 seq, 취소 및 결과 조회 시 사용

지급 요청 시 주의 사항

  • 지급 요청은 지급처리를 원하는 일자의 오전 10시 30분 전까지 요청이 되어야 합니다. (영업일 기준)
    • 오전 10시 30분 이후 당일 일자로 지급 요청 시 오류가 발생합니다.
  • 지급 요청 시 가맹점의 계좌 잔액 검증은 별도로 진행하지 않으므로 실제 지급대행 처리 결과는 결과 조회 API를 활용하여 검증하는 작업이 필요합니다.

6.3. 예시

요청 예시

아래 예시는 테스트 시 이해를 돕기 위해 임의로 만든 데이터로 요청 및 응답 규격을 확인하기 위한 용도입니다.
예시 데이터를 실제 API 요청에 사용하지 않도록 주의해주세요.

POST /om/api HTTP/1.1
Host: data.nicepay.co.kr
Content-Type: application/json

{
"header": {
"sid": "0102001",
"trDtm": "20190619163525",
"gubun": "S",
"resCode": "",
"resMsg": ""
},
"body": {
"mid": "nictest00m",
"encKey": "f10478217813ed17e1f55f65ffecd7f3ce5e65ed6c70d1217052bbe10c8302c2",
"subId": "1251216623",
"settlmntDt": "20190620",
"settlmntAmt": "12455555",
"dupChkYn": "N"
}
}

응답 예시


{
"header": {
"sid": "0102001",
"trDtm": "20190619163528",
"gubun": "R",
"resCode": "0000",
"resMsg": ""
},
"body": {
"mid": "nictest00m",
"subId": "1251216623",
"settlmntDt": "20190620",
"settlmntAmt": 12455555,
"dupYn": "N",
"seq": "296486",
"reqInfo": {
"header": {
"sid": "0102001",
"trDtm": "20190619163525",
"gubun": "S",
"resCode": "",
"resMsg": ""
},
"body": {
"mid": "nictest00m",
"encKey": "f10478217813ed17e1f55f65ffecd7f3ce5e65ed6c70d1217052bbe10c8302c2",
"subId": "1251216623",
"settlmntDt": "20190620",
"settlmntAmt": "12455555",
"dupChkYn": "N"
}
}
}
}

7. 지급취소 (0103001)

7.1. 요청 파라미터

필드명크기(byte)필수설명
mid10O가맹점 ID
settlmntDt8O지급일자 (YYYYMMDD)
subId50O서브몰 ID
seq20O지급 요청 seq, 지급 요청 시 응답된 seq 정보
encKey255O가맹점 인증키, 생성 규칙: hex(sha256(sid + mid + trDtm + 가맹점 Key))

7.2. 응답 파라미터

필드명크기(byte)설명
mid10가맹점 ID
subId50서브몰 ID
settlmntDt8지급일자 (YYYYMMDD)
settlmntAmt14지급 요청 금액
seq20취소된 seq

지급 취소 요청 시 주의 사항

  • 지급요청 취소는 단일 seq에 대해 처리가 가능합니다.
  • 지급처리일 기준 당일 오전 10시 30분 전까지 요청이 가능하며, 그 이후 시간에는 취소가 불가합니다.

7.3. 예시

요청 예시

아래 예시는 테스트 시 이해를 돕기 위해 임의로 만든 데이터로 요청 및 응답 규격을 확인하기 위한 용도입니다.
예시 데이터를 실제 API 요청에 사용하지 않도록 주의해주세요.

POST /om/api HTTP/1.1
Host: data.nicepay.co.kr
Content-Type: application/json

{
"header": {
"sid": "0103001",
"trDtm": "20190619163525",
"gubun": "S",
"resCode": "",
"resMsg": ""
},
"body": {
"mid": "nictest00m",
"encKey": "0f5532ee2f39a2f5334bcda177e60f128c7998ed325fca7e30b94639a6f6c199",
"subId": "1251216623",
"settlmntDt": "20190620",
"seq": "296486"
}
}

응답 예시

{
"header": {
"sid": "0103001",
"trDtm": "20190619163528",
"gubun": "R",
"resCode": "0000",
"resMsg": ""
},
"body": {
"mid": "nictest00m",
"subId": "1251216623",
"settlmntDt": "20190620",
"settlmntAmt": 12455555,
"seq": "296486",
"reqInfo": {
"header": {
"sid": "0103001",
"trDtm": "20190619163525",
"gubun": "S",
"resCode": "",
"resMsg": ""
},
"body": {
"mid": "nictest00m",
"encKey": "0f5532ee2f39a2f5334bcda177e60f128c7998ed325fca7e30b94639a6f6c199",
"subId": "1251216623",
"settlmntDt": "20190620",
"seq": "296486"
}
}
}
}


8. 결과조회 (0101002)

8.1. 요청 파라미터

필드명크기(byte)필수설명
mid10O가맹점 ID
settlmntDt8O지급일자 (YYYYMMDD)
subId50서브몰 ID, 미입력 시 mid 지급처리 전체 내역 응답
encKey255O가맹점 인증키, 생성 규칙: hex(sha256(sid + mid + trDtm + 가맹점 Key))

8.2. 응답 파라미터

필드명크기(byte)설명
totCnt10전체 건수
succCnt10성공 건수
failCnt10실패 건수
remainAmt20잔액
detail-결과 상세 ("detail 하위 파라미터 상세" 항목 참조)

detail 하위 파라미터 상세

필드명크기(byte)설명
rowNo10순번
seq20요청 seq
settlmntDt8지급일자
subCoNo10서브몰 사업자번호
subCoNm40서브몰명
subId50서브몰 ID
statusNm10지급 상태 (요청/성공/실패/재요청 진행중/삭제)
settlmntAmt20지급 금액
bankCd3은행코드
accntNm30예금주명
accntNo30계좌번호
errReason255실패 사유

8.3. 예시

요청 예시

아래 예시는 테스트 시 이해를 돕기 위해 임의로 만든 데이터로 요청 및 응답 규격을 확인하기 위한 용도입니다.
예시 데이터를 실제 API 요청에 사용하지 않도록 주의해주세요.

POST /om/api HTTP/1.1
Host: data.nicepay.co.kr
Content-Type: application/json

{
"header": {
"sid": "0101002",
"trDtm": "20190619163525",
"gubun": "S",
"resCode": "",
"resMsg": ""
},
"body": {
"mid": "nictest00m",
"encKey": "bf5ea7d9cde94ac4646f95ec4c2cae2ce763a4d388f7fda96b6182934b60111a",
"settlmntDt": "20190625",
"subId": ""
}
}

응답 예시

{
"header": {
"sid": "0101002",
"trDtm": "20190619163528",
"gubun": "R",
"resCode": "0000",
"resMsg": ""
},
"body": {
"mid": "nictest00m",
"totCnt": 4,
"succCnt": 0,
"failCnt": 0,
"remainAmt": 40000000,
"detail": [
{
"rowNo": "1",
"seq": "296490",
"settlmntDt": "20190625",
"subCoNo": "2208115770",
"subCoNm": "나이스정보통신1",
"subId": "2302000",
"statusNm": "요청",
"settlmntAmt": 14000000,
"bankCd": "011",
"accntNm": "나이스",
"accntNo": "***********",
"errReason": " "
},
{
"rowNo": "2",
"seq": "296491",
"settlmntDt": "20190625",
"subCoNo": "8158100527",
"subCoNm": "테스트상점",
"subId": "HongGilDong",
"statusNm": "요청",
"settlmntAmt": 10000,
"bankCd": "081",
"accntNm": "홍길동",
"accntNo": "***********",
"errReason": " "
},
{
"rowNo": "3",
"seq": "296498",
"settlmntDt": "20190625",
"subCoNo": "2208115770",
"subCoNm": "나이스정보통신2",
"subId": "2302005",
"statusNm": "요청",
"settlmntAmt": 125666,
"bankCd": "011",
"accntNm": "나이스",
"accntNo": "***********",
"errReason": " "
},
{
"rowNo": "4",
"seq": "296499",
"settlmntDt": "20190625",
"subCoNo": "8158100527",
"subCoNm": "테스트상점",
"subId": "2302230",
"statusNm": "요청",
"settlmntAmt": 123456,
"bankCd": "004",
"accntNm": "김철수",
"accntNo": "***********",
"errReason": " "
}
],
"reqInfo": {
"header": {
"sid": "0101002",
"trDtm": "20190619163525",
"gubun": "S",
"resCode": "",
"resMsg": ""
},
"body": {
"mid": "nictest00m",
"encKey": "bf5ea7d9cde94ac4646f95ec4c2cae2ce763a4d388f7fda96b6182934b60111a",
"settlmntDt": "20190625",
"subId": ""
}
}
}
}