NICEPAY API
...
Payment - API Credit Card
Pre-Auth & Capture - Payment API Credit Card
21 min
about pre auth & capture payment api credit card after you with registration with pre auth & capture feature type on docid\ ljmn qvjakwpaglh18925 , you can to next step on that through this learn about with recurringtoken on docid 5p povp7xv ohkyiebaoc or visit technical explanation about pre auth capture in docid\ yau1f649b4 xi0opn5idc pre auth payment api credit card (hold fund) api endpoint /nicepay/direct/v2/payment request method post post description pre auth (hold fund) merchant token sha256( timestamp + imid + referenceno + amt + merchantkey ) request format application/json request parameter for pre auth payment api credit card (hold fund) to able pre auth feature from your , you need to fill in txid from response result on docid\ ljmn qvjakwpaglh18925 that you have already done parameter type size description example / notes timestamp required required n 14 request timestamp ( yyyymmddhh24miss ) 20230522130518 txid required required an 30 transaction id ionpaytest01202305161007570327 referenceno required required ans 40 order number this is the description of the merchanttoken required required an 255 token ff139e49606387091cd9baeadff3161aff6afd9406e1f481e0fdb8b46d1ae5ae cardno required required n 20 number number 443426 0008 cardexpyymm required required a 4 card expiry ( yymm ) 3901 cardholdernm required required an 45 card holder name john doe only alphabet allowed cardholderemail required required ans 100 card holder email johndoe\@gmail com cardcvv required required n 4 card cvv 100 callbackurl required required an 255 result forward url https //www merchant com/callbackurl/ you also need cardno , cardexpyymm , cardholdernm , cardholderemail & cardcvv s that you can get from your so billing can be ed response parameter for pre auth payment api credit card (hold fund) the following is a response from request pre auth (hold fund) result parameter type size description example / notes timestamp n 14 response date ( yyyymmddhh24miss ) 20230516135959 resultcd n 4 docid 2r5sr3xvppu1eju1nitg 0000 resultmsg an 255 result message docid 4 fpewlvczfhcvygxwck9 success txid an 30 transaction id ionpaytest01202305161007570327 referenceno ans 40 order number merchantreferencenumber001 paymethod n 2 docid\ ek 0djw7nuhytcda4sa3p 01 when success amount n 12 amount 10000 when success currency an 3 currency idr when success goodsnm an 100 goods name goods 1 when success billingnm an 100 buyer name john doe when success transdt n 8 transaction date ( yyyymmdd ) 20230522 when success transtm n 6 transaction time ( hh24miss ) 135959 when success description an 100 description this is the description of the when success authno n 10 approval number 123456 when success issubankcd a 4 docid\ qbeq29lj53z vbvxtvb7l cena when success acqubankcd a 4 docid\ qbeq29lj53z vbvxtvb7l bnia when success cardno an 20 card number (masked) 443426 0008 when success cardexpyymm n 4 card expiry ( yymm ) 3901 when success instmntmon n 2 installment month 1 when success instmntype n 2 docid\ wfsinjxqc2s9yubbybpep 1 when success preauthtoken an 64 pre auth token 5c6ba40e61c45d9fa37e763ea1f86b9d6ac5f1f7ed279e4d4531191c83279320 when success cctranstype an 2 docid 7pas vd5ylg4vdurmygwo 3 when success vat n 12 value added tax ( ) 0 when success fee n 12 service fee 0 when success notaxamt n 12 tax free amount 0 when success acqubanknm a 255 acquiring name cimb issubanknm a 255 issuing name bca if this is successful, paid fund will automatically hold, and you will get needed preauthtoken to go through later capture capture immediately after pre auth is finished before fund expiry and will be considered void ( fund will return to cardholder) the expiration date on pre auth type usually takes up to 7 days sample parameter for pre auth payment api credit card (hold fund) request parameter curl curl location 'https //dev nicepay co id/nicepay/direct/v2/payment' \\ \ header 'x forwarded for 1 2 3' \\ \ header 'content type application/x www form urlencoded' \\ \ header 'cookie jsessionid=3fe76f9694b783056d2b7303a357c20b pg was1' \\ \ data urlencode 'timestamp=20251001101049' \\ \ data urlencode 'txid=testmpgs0501202510011026450166' \\ \ data urlencode 'referenceno=ordno20251001101069' \\ \ data urlencode 'merchanttoken=de7774d7e288057b706f70317f94b3c893724222cdce9922371dca6228531816' \\ \ data urlencode 'cardno=5123450000000008' \\ \ data urlencode 'cardexpyymm=3106' \\ \ data urlencode 'cardcvv=100' \\ \ data urlencode 'cardholdernm=nicepay test' \\ \ data urlencode 'callbackurl=https //dev nicepay co id/ionpay client/paymentresult jsp?order id=testmpgs0501202510011026450166' node js let secondversion = new secondapiversion(config); let parameterpayment = { amt "10000", referenceno "ordno20251001101069", txid "testmpgs0501202510011026450166", cardno "5123450000000008", callbackurl "https //dev nicepay co id/ionpay client/paymentresult jsp?order id=recurrtest01202509301555563979", cardexpyymm "3106", cardcvv "100", cardholdernm "nicepay test", preauthtoken "", // leave empty for hold fund cardholderemail "test\@email com", }; let response = secondversion requestpayment(parameterpayment);nicepay config = nicepay builder() isproduction(false) // set to true for production build(); card requestdata = card builder() timestamp("20250922143200") // current timestamp (yyyymmddhhmmss) txid("testmpgs0501202510011026450166") // transaction id from registration imid("testmpgs05") // your nicepay imid referenceno("ordno20251001101069") // unique order reference amt("10000") // payment amount merchanttoken(timestamp, imid, reffno, amount, merchant key) // secure token generation cardno("5123450000000008") // test card number cardexpyymm("3601") // card expiry date (yymm) cardcvv("100") // 3 digit cvv cardholdernm("nicepay test") // cardholder name callbackurl("https //dev nicepay co id/ionpay client/paymentresult jsp") // callback url recurringtoken("") // leave empty if not recurring token preauthtoken("") // leave empty for hold fund build(); string responsehtml = v2cardservice callv2cardpaymentrequest(requestdata, config); bodypayment = ( builderpayment buildpayment() settimestamp(datetime now() strftime("%y%m%d%h%m%s")) # current timestamp (yyyymmddhhmmss) settxid("testmpgs0501202510011026450166") # transaction id from registration setreferenceno("ordno20251001101069") # unique order reference setcashtag("") # leave empty if not using cashtag setcardno("5123450000000008") # test card number setcardexpyymm("3901") # card expiry date (yymm) setcardcvv("100") # 3 digit cvv setrecurringtoken("") # leave empty if not recurring setpreauthtoken("") # leave empty for hold fund request setamt("10000") # payment amount build() ) environment = ( builderenvironment buildenvironment() iscloud(false) # set to true if using nicepay cloud isproduction(false) # set to true for production build() ) response = servicenicepay servicepayment( datagenerator getpaymentbody(bodypayment datapayment()), environment ) vanilla js const paymentdata = { cardno "5123450000000008", // test card number cardexpyymm "3601", // card expiry in yymm format cardcvv "100", // 3 digit cvv cardholderemail "customer\@example com", // cardholder email cardholdernm "nicepay test", // cardholder name callbackurl "https //your domain com/callback", // callback url after payment txid "testmpgs0501202510011026450166", // transaction id from registration merchanttoken "bc2ee7790486a7ee4a5313d4c1d4088a38456b89204e308ae38e0beee3849d0b", // secure token preauthtoken "", // leave empty for hold fund }; const response = await nicepay paymenttransaction(paymentdata); laravel $url = httputil getnicepaydomain($this >useprod, $this >usecloud) $this >payment endpoint; // request body parameters $txid = "testmpgs0501202510011026450166"; $timestamp = carbon now() >format("ymdhis"); // current timestamp (yyyymmddhhmmss) $reference no = "ordno20251001101069"; $amt = "10000"; // generate secure merchant token $merchant token = $this >generatemerchanttoken( $timestamp, $this >imid, $reference no, $amt, $this >mer key ); $param = \[ "timestamp" => $timestamp, // current timestamp "txid" => $txid, // transaction id from registration "merchanttoken" => $merchant token, // secure hash token "cardno" => "5123450000000008", // test card number "cardexpyymm" => "3901", // card expiry date (yymm) "cardcvv" => "100", // 3 digit cvv "callbackurl" => "https //www nicepay co id/ionpay client/paymentresult jsp", // callback url "recurringtoken" => "", //leave empty if not recurring "preauthtoken" => "", // leave empty for hold fund request ]; $response = httputil redirectwithqueryparams($url, $param); php native $config = nicepay builder() >setisproduction(true) // set to false for sandbox/testing >build(); $parameter = card builder() >timestamp($timestamp) // current timestamp (yyyymmddhhmmss) >imid("testmpgs05") // your nicepay imid >txid("testmpgs0501202510011026450166") // transaction id from registration >referenceno("ordno20251001101069") // unique order reference >merchanttoken( $timestamp, $imid, $newcctrx >getreferenceno(), $newcctrx >getamt(), $this >merchantkey ) // generate secure token >cardno(testconst $card no) // test card number from constants >cardexpyymm(testconst $card exp yymm) // card expiry date (yymm) >cardcvv(testconst $card cvv) // 3 digit cvv >cardholdernm("nicepay test") // cardholder name >callbackurl("https //dev nicepay co id/ionpay client/paymentresult jsp?") // callback url after payment >recurringtoken("") >preauthtoken("") // leave empty for hold fund request >build(); $cardservice = new v2cardservice($config); $response = $cardservice >payment($parameter); var config nicepay? = nicepay builder() isproduction(true) // set to false for sandbox/testing build() val request directv2requestpaymentcard = directv2requestpaymentcard builder() timestamp("20250922143200") // current timestamp (yyyymmddhhmmss) txid("testmpgs0501202510011026450166") // transaction id from registration imid("testmpgs05") // your nicepay imid merchantkey(merchant key) // secret merchant key referenceno("ordno20251001101069") // unique order reference number amt("10000") // payment amount callbakurl("https //www nicepay co id/ionpay client/paymentresult jsp") // callback url after payment cardno("5123450000000008") // test card number cardcvv("123") // 3 digit cvv (sample) cardexpyymm("3601") // card expiry date (yymm) preauthtoken("") // left empty for hold fund build() val response = paymentservice registration(request, config)!! response parameter sample response capture payment api credit card api url /nicepay/direct/v2/payment request method post post description capture process from pre auth merchant token sha256( timestamp + imid + referenceno + amt + merchantkey ) request format application/json request parameter for capture payment api credit card after you get preauthtoken on paid from your on api pre auth payment (hold) the next step is going through capture on earlier held fund however to with that, you need to register again with new on docid\ ljmn qvjakwpaglh18925 with capture amount must be less or equal to hold amount from previous pre auth if you already success registered again, you can use this capture the capture can be executed multiple times as long as total amount that already went through pre auth still available for capture include pre auth still not yet expired or hasn't considered void the following is a list of to integrate for using preauthtoken without cardno , cardexpyymm , or cardcvv parameter type size description example / notes timestamp required required n 14 request timestamp ( yyyymmddhh24miss ) 20230516135959 txid required required an 30 transaction id ionpaytest01202305161007570327 referenceno required required ans 40 order number merchantreferencenumber001 merchanttoken required required an 255 token ff139e49606387091cd9baeadff3161aff6afd9406e1f481e0fdb8b46d1ae5ae cardholdernm required required an 45 card holder name john doe only alphabet allowed cardcvv n 6 card cvv 100 callbackurl required required ans 255 result url https //www nicepay co id/ionpay client/paymentresult jsp preauthtoken required for capture process in pre auth required for capture process in pre auth an 64 pre auth token 5976c263fe6116503645057bb00be809c3a6f9c1e355efa12ef2cda2be03d5eb txid will never be similar with request (pre auth hold) the capture will ensure that capture amount value won't exceed funds you already pre auth response parameter for capture payment api credit card parameter type size description example / notes timestamp n 14 response date ( yyyymmddhh24miss ) 20230516135959 resultcd n 4 docid 2r5sr3xvppu1eju1nitg 0000 resultmsg an 255 result message docid 4 fpewlvczfhcvygxwck9 success txid an 30 transaction id ionpaytest01202305161007570327 referenceno ans 40 order number merchantreferencenumber001 paymethod n 2 docid\ ek 0djw7nuhytcda4sa3p 01 when success amount n 12 amount 10000 when success currency an 3 currency idr when success goodsnm an 100 goods name goods 1 when success billingnm an 100 buyer name john doe when success transdt n 8 transaction date ( yyyymmdd ) 20230522 when success transtm n 6 transaction time ( hh24miss ) 224343 when success description an 100 description this is the description of the when success authno n 10 approval number 123456 when success issubankcd a 4 docid\ qbeq29lj53z vbvxtvb7l cena when success acqubankcd a 4 docid\ qbeq29lj53z vbvxtvb7l bnia when success cardno an 20 card number (masked) 51234500 0008 when success cardexpyymm n 4 card expiry ( yymm ) 3901 when success instmntmon n 2 installment month 1 when success instmntype n 2 docid\ wfsinjxqc2s9yubbybpep 1 when success cctranstype an 2 docid 7pas vd5ylg4vdurmygwo 3 when success vat n 12 value added tax ( ) 0 when success fee n 12 service fee 0 when success notaxamt n 12 tax free amount 0 when success acqubanknm a 255 acquiring name cimb issubanknm a 255 issuing name bca txid will never similar with request hold capture will ensure that capture amount value won't exceed owned funds sample parameter for capture payment api credit card request parameter curl curl location 'https //dev nicepay co id/nicepay/direct/v2/payment' \\ \ header 'x forwarded for 1 2 3' \\ \ header 'content type application/x www form urlencoded' \\ \ data urlencode 'timestamp=20251001171036' \\ \ data urlencode 'txid=testmpgs0501202510011716431018' \\ \ data urlencode 'referenceno=ordno20251001171009' \\ \ data urlencode 'merchanttoken=e9cc3a18732249cd1d51062c5377e5bddb31dae9a232f1c16249a17d376699ff' \\ \ data urlencode 'cardholdernm=nicepay test' \\ \ data urlencode 'preauthtoken=a513eff039c80a8c617fe57dbb401c52dbfd683b5d48fb3df61312f5a6665f35' \\ \ data urlencode 'callbackurl=https //dev nicepay co id/ionpay client/paymentresult jsp?order id=testmpgs0501202510011716431018' node js let secondversion = new secondapiversion(config); let parameterpayment = { amt "100", referenceno "ordno20251001171009", txid "testmpgs0501202510011716431018", callbackurl "https //dev nicepay co id/ionpay client/paymentresult jsp?order id=recurrtest01202509301555563979", cardholdernm "nicepay test", preauthtoken "a513eff039c80a8c617fe57dbb401c52dbfd683b5d48fb3df61312f5a6665f35", // preauth token cardholderemail "test\@email com", }; let response = secondversion requestpayment(parameterpayment);nicepay config = nicepay builder() isproduction(false) // set to true for production build(); card requestdata = card builder() timestamp("20250922143200") // current timestamp (yyyymmddhhmmss) txid("testmpgs0501202510011716431018") // transaction id from registration imid("testmpgs05") // your nicepay imid referenceno("ordno20251001171009") // unique order reference amt("100") // payment amount merchanttoken(timestamp, imid, reffno, amount, merchant key) // secure token generation cardholdernm("nicepay test") // cardholder name callbackurl("https //dev nicepay co id/ionpay client/paymentresult jsp") // callback url recurringtoken("") // leave empty if not recurring token preauthtoken("a513eff039c80a8c617fe57dbb401c52dbfd683b5d48fb3df61312f5a6665f35") // preauth token build(); string responsehtml = v2cardservice callv2cardpaymentrequest(requestdata, config); bodypayment = ( builderpayment buildpayment() settimestamp(datetime now() strftime("%y%m%d%h%m%s")) # current timestamp (yyyymmddhhmmss) settxid("testmpgs0501202510011716431018") # transaction id from registration setreferenceno("ordno20251001171009") # unique order reference setcashtag("") # leave empty if not using cashtag setrecurringtoken("") # leave empty if not recurring setpreauthtoken("a513eff039c80a8c617fe57dbb401c52dbfd683b5d48fb3df61312f5a6665f35") # preauth token setamt("10000") # payment amount build() ) environment = ( builderenvironment buildenvironment() iscloud(false) # set to true if using nicepay cloud isproduction(false) # set to true for production build() ) response = servicenicepay servicepayment( datagenerator getpaymentbody(bodypayment datapayment()), environment ) vanilla js const paymentdata = { cardholderemail "customer\@example com", // cardholder email cardholdernm "nicepay test", // cardholder name callbackurl "https //your domain com/callback", // callback url after payment txid "testmpgs0501202510011716431018", // transaction id from registration merchanttoken "bc2ee7790486a7ee4a5313d4c1d4088a38456b89204e308ae38e0beee3849d0b", // secure token preauthtoken "a513eff039c80a8c617fe57dbb401c52dbfd683b5d48fb3df61312f5a6665f35", // preauth token }; const response = await nicepay paymenttransaction(paymentdata); laravel $url = httputil getnicepaydomain($this >useprod, $this >usecloud) $this >payment endpoint; // request body parameters $txid = "testmpgs0501202510011716431018"; $timestamp = carbon now() >format("ymdhis"); // current timestamp (yyyymmddhhmmss) $reference no = "ordno20251001171009"; $amt = "100"; // generate secure merchant token $merchant token = $this >generatemerchanttoken( $timestamp, $this >imid, $reference no, $amt, $this >mer key ); $param = \[ "timestamp" => $timestamp, // current timestamp "txid" => $txid, // transaction id from registration "merchanttoken" => $merchant token, // secure hash token "callbackurl" => "https //www nicepay co id/ionpay client/paymentresult jsp", // callback url "recurringtoken" => "", //leave empty if not recurring "preauthtoken" => "a513eff039c80a8c617fe57dbb401c52dbfd683b5d48fb3df61312f5a6665f35", // preauth token ]; $response = httputil redirectwithqueryparams($url, $param); php native $config = nicepay builder() >setisproduction(true) // set to false for sandbox/testing >build(); $parameter = card builder() >timestamp($timestamp) // current timestamp (yyyymmddhhmmss) >imid("testmpgs05") // your nicepay imid >txid("testmpgs0501202510011716431018") // transaction id from registration >referenceno("ordno20251001171009") // unique order reference >merchanttoken( $timestamp, $imid, $newcctrx >getreferenceno(), $newcctrx >getamt(), $this >merchantkey ) // generate secure token >cardno(testconst $card no) // test card number from constants >cardexpyymm(testconst $card exp yymm) // card expiry date (yymm) >cardcvv(testconst $card cvv) // 3 digit cvv >cardholdernm("nicepay test") // cardholder name >callbackurl("https //dev nicepay co id/ionpay client/paymentresult jsp?") // callback url after payment >recurringtoken("") >preauthtoken("a513eff039c80a8c617fe57dbb401c52dbfd683b5d48fb3df61312f5a6665f35") // preauth token >build(); $cardservice = new v2cardservice($config); $response = $cardservice >payment($parameter); var config nicepay? = nicepay builder() isproduction(true) // set to false for sandbox/testing build() val request directv2requestpaymentcard = directv2requestpaymentcard builder() timestamp("20250922143200") // current timestamp (yyyymmddhhmmss) txid("testmpgs0501202510011716431018") // transaction id from registration imid("testmpgs05") // your nicepay imid merchantkey(merchant key) // secret merchant key referenceno("ordno20251001171009") // unique order reference number amt("10000") // payment amount callbakurl("https //www nicepay co id/ionpay client/paymentresult jsp") // callback url after payment preauthtoken("a513eff039c80a8c617fe57dbb401c52dbfd683b5d48fb3df61312f5a6665f35") // preauth token build() val response = paymentservice registration(request, config)!! response parameter sample response 	 	 	 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 		 	 	 callback handling for pre auth & capture payment api credit card when your callback already received callbackurl , we recommended do verification using docid\ fc bkdwkevwf2h9usoc8k callback handling is very important to minimize fraud act, we highly recommend to do verification using callback handling url callback "callbackurl" "https //www merchant com/callbackurl/" response callback { "resultcd" "0000", "resultmsg" "success", "txid" "ionpaytest01202212141112221428", "referenceno" "", "paymethod" "01", "amt" "10000", "transdt" "20221212", "transtm" "121212", "description" "testing credit card transaction", "authno" "080623", "issubankcd" "othr" "acqubankcd" "bmri", "cardno" "453211 1111", "goodsnm" "test transaction nicepay" "billingnm" "john doe", "currency" "idr", "timestamp" "20221212121212", "merchanttoken" "2035d2295d9578fffb40137186f0203474142ae3e57992d4847826c5fcaffce6", "cardexpyymm" "2712", "instmntmon" "1", "instmnttype" "1", "cctranstype" "1" }