- METHOD TYPECash Payment
- PAYMENTS
- PAYOUTS
- REFUNDS
- RECURRING
Introduction
PayNearMe is a US bill payment option, and processes payments for thousands of businesses and government agencies. Customers can settle their bills via debit, credit, bank account, or cash over the counter at more than 27,000 payment locations nationwide, including 7-Eleven and CVS Pharmacy stores.
This guide provides steps to integrate the PayNearMe, into your payment flows using the Nuvei platform, in connect mode.
Nuvei Environments
You can process PayNearMe APM deposit (payment) transactions using Nuvei’s server-to-server REST API calls.
Prerequisites and Notes
- This document assumes that you have completed all account setup prerequisites and are ready to integrate the PayNearMe payment methods into your payment flow.
- This method is for deposits only, there are no payouts.
- Test credentials and testing procedures should be obtained directly from PayNearMe.
- Current PayNearMe Transaction Limits: $500 per transaction, $3,000 in 24 hours and $10,000 over 30 days
Supported Countries
- United States
Supported Currencies
- USD
Payment Processing
The PayNearMe deposit (payment) process consists of an “online flow” followed by a “physical flow”.
Online Payment Flow
- The customer initiates a PayNearMe deposit from the payment page, where you need to collect the following customer details:
FirstName
,LastName
,phone
(exactly 10 digits), anddateOfBirth
. - Send a /payment API request (see details below) to PayNearMe, and include the customer details that you collected.
- Use the
redirectUrl
that was returned in the response to redirect the customer to the PayNearMe online deposit page, to submit an online deposit request. - If PayNearMe approves the customer’s online deposit request, the customer can either print the payment instructions or send them to their mobile.
Physical Payment Flow
- To complete the deposit of the money, the customer needs to present these payment instructions at a participating shop (7-Eleven, CVS, or Family Dollar). The employee at the store uses the merchant application to process the payment instructions, which sends a “preDeposit” request” to PayNearMe.
- The merchant application receives a “preDeposit” Direct Merchant Notification (DMN) response from PayNearMe containing the transaction details:
Example of a “preDeposit” DMN Received by the Merchant Application
'PPP_TransactionID=291956098&orderTransactionId=1080350618&totalAmount=12.30¤cy=USD&total_discount=0.00&total_handling=0.00&total_shipping=0.00&total_tax=0.00&merchant_site_id=217248&message=PENDING&payment_method=apmgw_PayNearMe&merchant_id=479748173730597238&responseTimeStamp=2021-08-04.07%3A39%3A06&subMethod=https%3A%2F%2Fwww.paynearme-sandbox.com%2F89448283193&type=APM_PREDEPOSIT&TransactionID=711000000000011320&Status=PENDING&transactionType=Sale&responsechecksum=4af2b20afeb461cbcd7dda3f7cf0c4bc4dffe63d8a5f501e02dd6ed04134b1db&advanceResponseChecksum=91fbbe07c9b9da7db3ff5ce19e1199a7ded1af80cba86de1d8f0067cc378f6a8'
- If you decide to accept the deposit, then:
Send an “action approved” response to PayNearMe.Example of an “action approved” Response Sent to PayNearMe
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Body> <FinalizeHDepositResponse xmlns="http://www.safecharge.com/"> <FinalizeRedirectDepositResult> <Status>APPROVED</Status> </FinalizeRedirectDepositResult> </FinalizeHDepositResponse> </S:Body> </S:Envelope>
The employee at the store informs the customer that their deposit request is approved, and accepts the money from the customer.
- If you decide to decline the deposit, then:
Send an “action declined” response to PayNearMe.Example of an “action declined” Response Sent to PayNearMe
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Body> <FinalizeHDepositResponse xmlns="http://www.safecharge.com/"> <FinalizeRedirectDepositResult> <Status>DECLINED</Status> <ErrorDetails/> </FinalizeRedirectDepositResult> </FinalizeHDepositResponse> </S:Body> </S:Envelope>
The employee at the store informs the customer that their deposit request is declined, and that they cannot pay the money at the shop.
The process ends here!
- If you decide to accept the deposit, then:
- (Assuming that you “accepted“, as described above…)
The employee at the store uses the merchant application to register that the customer paid the money.
Send a final a /payment API request, with PayNearMe as the APM, and include the transaction details. - The merchant application receives a “Deposit” DMN response from PayNearMe containing an “approved/declined” response and other transaction details:
- If PayNearMe approved, then:
The employee at the store informs the customer that their deposit transaction is approved.
The process ends here!Example of an APPROVED DMN
...'ppp_status=OK&Status=APPROVED&ExErrCode=0&ErrCode=0&errApmCode=0&errApmDescription=&errScCode=0&errScDescription=&Reason=&ReasonCode=0&PPP_TransactionID=292601448&userid=&merchant_unique_id=&customData=&productId=&first_name=Andrius&last_name=Statkevicius&email=sctest1%40gmail.com¤cy=USD&customField1=&customField2=&customField3=&customField4=&customField5=&customField6=&customField7=&customField8=&customField9=&customField10=&customField11=&customField12=&customField13=&customField14=&customField15=&invoice_id=&address1=Random&address2=&country=United+States&state=COLORADO&city=Montgomery&zip=08558&phone1=1112223333&phone2=&phone3=&client_ip=&nameOnCard=&cardNumber=&bin=&acquirerId=&expMonth=&expYear=&Token=&tokenId=&AuthCode=https%3A%2F%2Fwww.paynearme-sandbox.com%2F81648341453&AvsCode=&Cvv2Reply=&shippingCountry=&shippingState=&shippingCity=&shippingAddress=&shippingZip=&shippingFirstName=&shippingLastName=&shippingPhone=&shippingCell=&shippingMail=&total_discount=0.00&total_handling=0.00&total_shipping=0.00&total_tax=0.00&buyButtonProductBundleId=&merchant_site_id=123456&merchant_status=&action=&requestVersion=&message=APPROVED&merchantLocale=&unknownParameters=&payment_method=apmgw_PayNearMe&ID=&merchant_id=2412534535264665421&responseTimeStamp=2021-08-12.20%3A16%3A49&buyButtonProductId=&webMasterId=&appliedPromotions=&uniqueCC=&transactionType=Sale&externalEmail=&cardCompany=&eci=&user_token_id=982&userPaymentOptionId=69971568&TransactionID=711000000000256928&ExternalaccountID=81648341453&externalTransactionId=208312801523&APMReferenceID=A59FEE845CC73D3A53E3B411096B81F0&orderTransactionId=1081139198&totalAmount=20.00&dynamicDescriptor= MerchantAccount &feeAmount=&amountWithoutFee=&houseNumber=&customCurrency=&upoRegistrationDate=20210812&type=DEPOSIT&clientRequestId=&relatedTransactionId=&responsechecksum=5d211961ab7aaa561312d6e18d78cf31181edfd4bae3b0e24621924c085b1e88&advanceResponseChecksum=9049c2708b60ee80632b64bbe685b01b524015f2e3e41388c753f7bb54d5be23',
- If PayNearMe declined, then:
The employee at the store informs the customer that their deposit transaction is declined.
The process ends here!Example of a DECLINE DMN
...'ppp_status=FAIL&Status=DECLINED&ExErrCode=0&ErrCode=0&errApmCode=0&errApmDescription=&errScCode=0&errScDescription=&Reason=&ReasonCode=0&PPP_TransactionID=292180688&userid=&merchant_unique_id=&customData=&productId=&first_name=ALBERTA&last_name=BOBBETHCHARLESON&email=alberta_bobbethcharleson%40outlook.com¤cy=USD&customField1=&customField2=&customField3=&customField4=&customField5=&customField6=&customField7=&customField8=&customField9=&customField10=&customField11=&customField12=&customField13=&customField14=&customField15=&invoice_id=&address1=2992+Cameron+Road&address2=&country=United+States&state=NEW+YORK&city=New+York&zip=14236&phone1=1112223333&phone2=&phone3=&client_ip=&nameOnCard=&cardNumber=&bin=&acquirerId=&expMonth=&expYear=&Token=&tokenId=&AuthCode=https%3A%2F%2Fwww.paynearme-sandbox.com%2F88825968225&AvsCode=&Cvv2Reply=&shippingCountry=&shippingState=&shippingCity=&shippingAddress=&shippingZip=&shippingFirstName=&shippingLastName=&shippingPhone=&shippingCell=&shippingMail=&total_discount=0.00&total_handling=0.00&total_shipping=0.00&total_tax=0.00&buyButtonProductBundleId=&merchant_site_id=123456&merchant_status=&action=&requestVersion=&message=DECLINED&merchantLocale=&unknownParameters=&payment_method=apmgw_PayNearMe&ID=&merchant_id=2412534535264665421&responseTimeStamp=2021-08-08.14%3A48%3A40&buyButtonProductId=&webMasterId=&appliedPromotions=&uniqueCC=&transactionType=Sale&externalEmail=&cardCompany=&eci=&user_token_id=1303&userPaymentOptionId=69839678&TransactionID=711000000000116287&ExternalaccountID=88825968225&externalTransactionId=664636540167&APMReferenceID=29C0354B8021D48A491EE5271ABA170D&orderTransactionId=1080651688&totalAmount=10.00&dynamicDescriptor=merchantAccount&feeAmount=&amountWithoutFee=&houseNumber=&customCurrency=&upoRegistrationDate=20210808&type=DEPOSIT&clientRequestId=&relatedTransactionId=&responsechecksum=656db4b15c431653db381538b85205417816ba3cf9a4c27dde02adc046f619fb&advanceResponseChecksum=18ae975ba59a5252693b2931842579f298cfe3296516f62a169d4a769390bf52',
- If PayNearMe approved, then:
Appendix
Sending a Payment Request
Follow these steps to perform a payment using Nuvei REST API integration:
1. Generate a sessionToken
Press here for details.
2. Send a /payment
Request
Perform the payment by sending a /payment
request with its mandatory parameters including:
userTokenId
amount
currency
paymentOption.alternativePaymentMethod
class containing:paymentMethod
: “apmgw_PayNearMe“
deviceDetails
class containing:ipAddress
billingAddress
class containing:firstName
,lastName
,country
,email
,phone
(exactly 10 digits)userDetails
class containing:firstName
,lastName
,country
,email
,phone
(exactly 10 digits),dateOfBirth
Example /payment
Request
{ "sessionToken":"<sessionToken from /getSessionToken>", "merchantId":"<your merchantId>", "merchantSiteId":"<your merchantSiteId>", "clientRequestId":"<unique request ID in merchant system>", "timeStamp":"<YYYYMMDDHHmmss>", "checksum":"<calculated checksum>", "currency":"USD", "amount":"50", "userTokenId":"<unique customer identifier in merchant system>", "paymentOption":{ "alternativePaymentMethod":{ "paymentMethod":"apmgw_PayNearMe" } }, "deviceDetails":{ "ipAddress":"<customer's IP address>" }, "billingAddress":{ "firstName":"john", "lastName":"smith", "phone":"6175551414", "country":"US", "email":"[email protected]" } "userDetails":{ "firstName":"john", "lastName":"smith", "phone":"6175551414", "dateOfBirth":"2000-06-30", "country":"US", "email":"[email protected]" } }
Example /payment
Response
{ "orderId":"291955928", "userTokenId":"testUSPNM", "paymentOption":{ "redirectUrl":"https://www.paynearme-sandbox.com/89448283193", "userPaymentOptionId":"69775638", "card":{} }, "transactionStatus":"REDIRECT", "sessionToken":"5d204893-e618-4642-ad82-897ef96a7af8", "internalRequestId":297545938, "status":"SUCCESS", "errCode":0, "reason":"", "merchantId":"479748173730597238", "merchantSiteId":"217248", "version":"1.0", "clientRequestId":"20210804103506" }