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 {{proceed}} with {{cc}} registration with pre auth & capture feature type on docid\ ljmn qvjakwpaglh18925 , you can {{proceed}} to {{the}} next {{payment}} step on that {{transaction}} through this {{api}} {{paymentproduct}} learn about {{cc}} {{paymentproduct}} with recurringtoken on {{the}} docid 5p povp7xv ohkyiebaoc {{page}} or visit {{the}} technical explanation about pre auth capture in docid\ yau1f649b4 xi0opn5idc {{page}} 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 {{the}} pre auth feature from your {{customer}} {{transaction}} , you need to fill in {{the}} txid {{parameter}} from {{the}} 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 {{merchant}} order number this is the description of the {{paymentproduct}} merchanttoken required required an 255 {{merchant}} token ff139e49606387091cd9baeadff3161aff6afd9406e1f481e0fdb8b46d1ae5ae cardno required required n 20 {{cc}} number {{cc}} 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 {{paymentproduct}} result forward url https //www merchant com/callbackurl/ you also need cardno , cardexpyymm , cardholdernm , cardholderemail & cardcvv {{parameter}} s that you can get from your {{customer}} so {{the}} billing {{transaction}} can be {{process}} ed response parameter for pre auth payment api credit card (hold fund) the following is a response {{parameter}} from {{the}} request pre auth {{paymentproduct}} (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 {{merchant}} order number merchantreferencenumber001 paymethod n 2 docid\ ek 0djw7nuhytcda4sa3p 01 when success amount n 12 {{paymentproduct}} amount 10000 when success currency an 3 currency idr when success goodsnm an 100 goods name {{merchant}} 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 {{paymentproduct}} 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 ( {{vat}} ) 0 when success fee n 12 service fee 0 when success notaxamt n 12 tax free amount 0 when success acqubanknm a 255 acquiring {{bank}} name cimb issubanknm a 255 issuing {{bank}} name bca if this {{process}} is successful, {{the}} paid fund will automatically hold, and you will get {{the}} needed preauthtoken to go through {{the}} later capture {{process}} {{please}} {{proceed}} capture {{process}} immediately after {{the}} pre auth {{process}} is finished before {{the}} {{transaction}} fund expiry and will be considered void ( {{the}} {{transaction}} fund will return to {{the}} cardholder) the expiration date on {{the}} pre auth {{transaction}} 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 {{the}} preauthtoken on {{the}} paid {{transaction}} from your {{customer}} on api pre auth payment (hold) {{process}} the next step is going through capture {{process}} on {{the}} earlier held fund however to {{proceed}} with that, you need to register again with {{the}} new {{transaction}} on docid\ ljmn qvjakwpaglh18925 with {{the}} capture amount must be less or equal to {{the}} hold amount from {{the}} previous pre auth {{process}} if you already success registered {{the}} {{transaction}} again, you can use this {{api}} capture the capture {{process}} can be executed multiple times as long as {{the}} total amount that already went through pre auth still available for capture include {{the}} pre auth {{transaction}} still not yet expired or hasn't considered void the following is a list of {{parameter}} to integrate for {{the}} {{cc}} {{payment}} {{process}} 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 {{merchant}} order number merchantreferencenumber001 merchanttoken required required an 255 {{merchant}} 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 {{paymentproduct}} 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 {{the}} request (pre auth hold) the capture {{process}} will ensure that {{the}} capture amount value won't exceed {{the}} 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 {{merchant}} order number merchantreferencenumber001 paymethod n 2 docid\ ek 0djw7nuhytcda4sa3p 01 when success amount n 12 {{paymentproduct}} amount 10000 when success currency an 3 currency idr when success goodsnm an 100 goods name {{merchant}} 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 {{paymentproduct}} 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 ( {{vat}} ) 0 when success fee n 12 service fee 0 when success notaxamt n 12 tax free amount 0 when success acqubanknm a 255 acquiring {{bank}} name cimb issubanknm a 255 issuing {{bank}} name bca txid will never similar with {{the}} request hold capture {{process}} will ensure that {{the}} capture amount value won't exceed {{the}} 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 {{the}} {{merchant}} do {{the}} {{status}} verification using {{the}} docid\ fc bkdwkevwf2h9usoc8k callback handling is very important to minimize {{the}} fraud act, we highly recommend {{the}} {{merchant}} to do {{the}} 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" }