Danal payment window integration guide

1. Configure Danal PG settings

Refer to the Danal settings page to configure the PG settings.

2. Request payment

To open the Danal TPay payment window, call JavaScript SDK IMP.request_pay(param, callback).
In both PC and mobile browsers, callback is invoked after calling IMP.request_pay(param, callback).
Authenticated payment request
Non-authenticated payment request
Javascript SDK
pg : 'danal_tpay',
pay_method : 'card',
merchant_uid : '{Merchant created Order ID}', // Example: order_no_0001
name : 'Order name: Test payment request',
amount : 14000,
buyer_email : '[email protected]',
buyer_name : 'John Doe',
buyer_tel : '010-1234-5678',
buyer_addr : 'Shinsa-dong, Gangnam-gu, Seoul',
buyer_postcode : '123-456'
}, function(rsp) { // callback logic
//* ...Omitted... *//

Key parameter description

pg *** **string
PG code
  • If not specified and this is the only PG setting that exists, default PG is automatically set.
  • If there are multiple PG settings, set to danal_tpay.
pay_method *** **string
Payment method code
Payment method codes
  • card (credit card)
  • trans(instant account transfer)
  • vbank(virtual account)
  • cultureland(Cultureland)
  • happymoney(Happy Money)
  • booknlife (Book n culture gift card)
merchant_uid *** **string
Order ID
Must be unique for each request.
Customer phone number
Danal payment window may throw an error if omitted
amount *** **integer
Payment amount
Must be an integer (not string)
Virtual account payment requirement
  • biz_num: 10-digit business registration number (required)
To open non-authenticated payment window, specify the customer_uid parameter.
  • If requesting both billing key and initial payment, specify the payment amount.
  • If only requesting for billing key, set to 0. (if amount is set to 0, Danal executes a test payment of 10 won which is automatically cancelled after 30 minutes.)
Javascript SDK
pg : 'danal_tpay',
pay_method : 'card', // only 'card' supported.
merchant_uid : '{Merchant created Order ID}', // Example: issue_billingkey_monthly_0001
name : 'Order name: Billing key request test',
amount : 0, // For display purpose only (set actual amount to also request payment approval).
customer_uid : '{Unique ID for the card (billing key)}', // Required (Example: gildong_0001_1234)
buyer_email: "[email protected]",
buyer_name: "John Doe",
buyer_tel : '02-1234-1234',
buyer_addr : 'Samseong-dong, Gangnam-gu, Seoul',
period : {
from : "20200101", //YYYYMMDD
to : "20201231" //YYYYMMDD
}, function(rsp) {
if ( rsp.success ) {
} else {

Key parameter description

pg *** **string
PG code
  • If not specified and this is the only PG setting that exists, default PG is automatically set.
  • If there are multiple PG settings, set to danal_tpay.
customer_uid *** **string
Credit card billing key
Billing key to be mapped 1:1 with the user-entered credit card information.
amount *** **Integer
Payment amount
0: only billing key, > 0: billing key + initial payment
period`` array
Product subscription payment for subscription payment. The date is displayed on the Danal payment window.

Request payment with billing key (customer_uid)

After successfully getting the billing key, the billing key is stored on the i'mport server mapped 1:1 with the specified customer_uid. For security reasons, the server cannot directly access the billing key. Subsequent payments can be requested by calling the non-authenticated payment request REST API with the customer_uid as follows:
curl -H "Content-Type: application/json" \
-X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \

3. Additional functions

Installment setting
Direct credit card module call
Enable specific credit cards
display: {
card_quota: [6] // Display up to 6 months installment plans
  • card_quota :
    • []: Only immediate pay
    • 3,6: immediate, 3, 6 month installment plans\
Installment plan option is available only for KRW 50,000 or more.
Example of allowing up to 3 months** installment plans**
card: {
direct: {
code: "367",
quota: 3,
usePoint :Y
  • code: Credit card code (string)
  • quota: Installment plan. For immediate, set to 0. (integer)
  • usePoint: Option to use points (post applied)
Danal setup required
  • Direct module call requires pre-setup by Danal.
card : {
detail : [
{card_code:"*", enabled:false}, // Disable all credit cards
{card_code:'366', enabled:true} // Enable specific credit card
  • card_code: Credit card code (string)
  • enabled: Option to enable the credit card (boolean)
Example of showing only Shinhan Card in the payment window