⌨️Toss Payments
Toss Payments payment window integration guide
1. Configure Toss Payments PG settings
Refer to the Toss Payments settings page to configure the PG settings.

2. Request payment
To open the payment window, call JavaScript SDK IMP.request_pay(param, callback).
In PC browsers, callback is invoked after calling IMP.request_pay(param, callback). In mobile browsers, the page is redirected to m_redirect_url.
IMP.request_pay({
pg : 'uplus',
pay_method : 'card',
merchant_uid : '{Merchant created Order ID}', // Example: order_no_0001
name : 'Order name: Test payment request',
amount : 14000,
buyer_email : 'iamport@siot.do',
buyer_name : 'John Doe',
buyer_tel : '010-1234-5678',
buyer_addr : 'Shinsa-dong, Gangnam-gu, Seoul',
buyer_postcode : '123-456',
m_redirect_url : '{Mobile only - URL to redirect to after payment approval}' // Example: https://www.my-service.com/payments/complete/mobile
}, 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 PGis automatically set.If there are multiple PG settings, set to
uplus.
pay_method *** **string
Payment method code
merchant_uid *** **string
Order ID
Must be unique for each request.
amount *** **integer
Payment amount
Must be an integer (not string).
escrow`` boolean
Ecrow option
To open non-authenticated payment window, specify the customer_uid parameter. After getting a billing key from this window, you can request payment using the billing key.
IMP.request_pay({
pg : 'tosspayments',
pay_method : 'card', // only 'card' supported.
merchant_uid : '{Merchant created Order ID}', // Example: issue_billingkey_monthly_0001
name : 'Initial billing key request',
amount : 0, // For display purpose only (no payment approval).
customer_uid : '{Unique ID for the card (billing key)}', // Required (Example: gildong_0001_1234)
buyer_email: "johndoe@gmail.com",
buyer_name: "John Doe",
buyer_tel : '02-1234-1234',
m_redirect_url : '{redirect URL}', // Example: https://www.my-service.com/payments/complete/mobile (for mobile only)
customer_id :'matthew' // Merchant user ID
}, function(rsp) {
if ( rsp.success ) {
alert('Success');
} else {
alert('Failed');
}
});Key parameter description
pg *** **string
PG code
If not specified and this is the only PG setting that exists,
default PGis automatically set.If there are multiple PG settings, set to
tosspayments.
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
Amount to display in the payment window, but actual payment approval is not processed. (To request payment, use the REST API with the customer_uid.)
customer_id *** **string
Customer ID
Customer user ID that maps to billing key. If not specified, this is generated by i'mport.\
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}' \
https://api.iamport.kr/subscribe/payments/againYou can use i'mport REST API to request billing key, request payment, and schedule payment.
MID Issuance
When you get an MID from Toss Payments, the API version must be 1.4.
Request one-time payment
To request a one-time payment, use the key-in REST API POST /subscribe/payments/onetime. The card information is not saved during this process.
curl -H "Content-Type: application/json" \
-X POST -d '{"merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
https://api.iamport.kr/subscribe/payments/onetimeRequest billing key
To request a billing key, use the billing key request REST API POST /subscribe/customers/{customer_uid}.
curl -H "Content-Type: application/json" \
-X POST -d '{"card_number":"1234-1234-1234-1234", "expiry":"2025-12", "birth":"820213", "pwd_2digit":"00"}' \
https://api.iamport.kr/subscribe/customers/your-customer-unique-idRequest billing key + initial payment
To request a billing key and initial payment, use the key-in REST API POST /subscribe/payments/onetime.
customer_uid: required for saving the billing key.
curl -H "Content-Type: application/json" \
-X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "card_number":"1234-1234-1234-1234", "expiry":"2019-01", "birth":"123456", "amount":3000}' \
https://api.iamport.kr/subscribe/payments/onetime Request payment with billing key
After successfully getting the billing key and making the initial payment, 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 repeat pay REST API (POST /subscribe/payments/again) 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}' \
https://api.iamport.kr/subscribe/payments/againFor detailed information, refer to:
⏰Non-authenticated payment3. Additional functions
display: {
card_quota: [6], // Display up to 6 months installment plans
only_installment: true // Disable immediate pay option
}Parameters
card_quota :
Enable only specified installment months
[]: Only immediate pay2,3,4,5,6: immediate, 2, 3, 4, 5, 6 month installment plans
If only_installment:
true, only shows specified months incard_quota.\
card: {
direct: {
code: "367",
quota: 3
}
}Parameters
code: Credit card code (string)
quota: Installment plan. For immediate, set to 0. (integer)
card : {
detail : [
{card_code:"*", enabled:false}, // Disable all credit cards
{card_code:'366', enabled:true} // Enable specific credit card
]
}Parameters
card_code: Credit card code (string)
enabled: Option to enable the credit card (boolean)
Last updated
