- METHOD TYPEBank Transfer
- PAYMENTS
- PAYOUTS
- REFUNDS
- RECURRING
Introduction
PIX is a Brazilian payment method that supports payments (deposits), payouts (withdrawals), and refunds (depending on provider). All transactions are regulated by the Central Bank of Brazil.
To complete PIX payments, transactions must be authorized by scanning a QR code containing transaction information. Transaction details must be confirmed on a mobile device.
By default, the merchant redirects the customer to an APM provider page with the QR code.
For payments (deposits) and payouts (withdrawals) with PIX, Nuvei provides a bank detail verification service that helps merchants comply with recent gambling regulations enacted in Brazil.
Supported Countries
- Brazil
Supported Currencies
- BRL
- USD
Payment (Deposit) Flow
If the merchant has enabled bank detail verification, see Payment with Bank Detail Verification.
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– Unique customer identifier in merchant system.amountcurrencypaymentOption.alternativePaymentMethodclass containing:paymentMethod: “apmgw_PIX“personal_id
deviceDetailsclass containing:ipAddressbillingAddressclass containing:firstName,lastName,address,phone,zip,city,email,countryuserDetailsclass containing:firstName,lastName,address,phone,zip,city,email,country
Example /payment Request
{
"sessionToken": "<sessionToken from /getSessionToken>",
"merchantId": "<merchantId>",
"merchantSiteId": "<merchantSiteId>",
"clientUniqueId": "<unique transaction ID in merchant system>",
"clientRequestId": "<unique request ID in merchant system>",
"amount": "200",
"currency": "BRL",
"userTokenId": "<unique customer identifier in merchant system>",
"paymentOption": {
"alternativePaymentMethod": {
"paymentMethod": "apmgw_PIX",
"personal_id": "<personal ID or CPF>"
}
},
"deviceDetails": {
"ipAddress": "<customer's IP address>"
},
"billingAddress": {
"firstName": "John",
"lastName": "Smith",
"address": "Praça dos 3 Poderes",
"phone": "556132155456",
"zip": "70160",
"city": "Brasília",
"email": "[email protected]",
"country": "BR"
},
"userDetails": {
"firstName": "John",
"lastName": "Smith",
"address": "Praça dos 3 Poderes",
"phone": "556132155456",
"zip": "70160",
"city": "Brasília",
"email": "[email protected]",
"country": "BR"
},
"timeStamp": "<YYYYMMDDHHmmss>",
"checksum": "<calculated checksum>"
}
The response is one of the following:
Example /payment Response – redirectUrl is APM Provider Page with QR Code
{
"orderId": "37287371",
"userTokenId": "chochoRank1hht5ehdehfje33hjdskggtthgjjgh44e7",
"paymentOption": {
"redirectUrl": "https://noccapi-stg.paymentez.com/qr/render/TlZFSVFFU0hQSVgtQlJMO0tPSS01OTU7ODMzYTZhNjZiMDk1NTg4ZWIzODJkYWJlZDdlNzg0MzNmMzVkOGZiYjRjYzcwNTU2Mjc2Y2Q2MzY4N2NkYzc0ZA==",
"userPaymentOptionId": "8179541",
"card": {}
},
"transactionStatus": "REDIRECT",
"sessionToken": "04cb9877-34da-4ea5-8c71-a8f60e08d1c6",
"clientUniqueId": "uniqueIdCC",
"internalRequestId": 20295621,
"status": "SUCCESS",
"errCode": 0,
"reason": "",
"merchantId": "4526724817460808257",
"merchantSiteId": "178906",
"version": "1.0",
"clientRequestId": "20220526172147"
}
Example /payment Response – redirectUrl Contains Data for Merchant to Generate QR Code
{
"orderId": "37287311",
"userTokenId": "chochoRank1hht5efdshjfhjdskggtthgjjgh44e7",
"paymentOption": {
"redirectUrl": "qrCode=iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AQAAAACgl2eQAAADCUlEQVR4Xu2XUW4cIRBE6YvA/W+Ro8BFIPWKsWU5kpWPbOVn8SaZhWep1F1dTNr5ef1q33e+rTdw1xu466+A2VqtXbuP3etMPY9zlrdjwPLnrNm1NceaNXtv426nAOliqw5K+1io3IBhoFyZsWuaE/UfgM1h0xpzTMqUBfRxXZB2ONylhy/Nej0wMe2fi+0Y4KUend1omcZHR7vufgigNMzLEDXFbL63Pj6bFQBkld57MS0KkEWfdhOg3sWAI0mYRUIJMkvGwq5VCJhWtwkwAWoXIcJvjRxw9WnL/YKQWxejPGKAxvZgEHWoBKlhErztmBhgafaMXCtqWKVDJQYc2oNndY5llncEspUDlOFFrXRA23QiUl9jwB7aPvhkoE5UGeQxBlyFLEaXCbrW+XT16wGe9Kcsk25JsH/oWgjw9PbGge+ysdAtgRAhwNm1iW+rXN5pV2oMuEaVTHlXL30iFaySXU+hAsBGpJulzAAclE3geEQGAIzCfcKrFv7VEVna3LAQMIcNyiue7lKSg1ppQ0OcAshPWWT4amNtarb4GgN8qcmwvlAk8qNRtC4GuEVKLn13fKlUUuxepQC+C9NWJ9ZlHRu5iLMUMPGrdhkZLKwLpvQfoXvXhoCDzsZP0beFgagefgkC0yWiVbxqFBmmn/Xh6tcDyxnGtUpskJ/Mb0dpDGBQnSJSJ7NKHYahaR+Fej3wWMSqMI/+Utmkmm6lgCewfICwmyPdHg4BGtRBkHp+m29VqbPyHCCPKL+pFzpJUiZIep9CBQAnOZ+nQwu3TP8bAybjqvJgkyI+DjLF07gQ4M5wXEibvtod5u0RGQDYKhhZFX3ca9hYuRID9GbDidql+kgt/eKCpYMpwGaVIAZGAaKObZyL1BygxTMgMUKXuOEXbQwBFEWaOt4tusQW/eKXQsDic0vE+17njA4SrjFg8n43XCwbZQsdfooCC4eSJJoXJVkRYJ/NSgHEOBIJ8wtYeAzQh0HpCjLop3GDeU4BtEU2kUpXR1YhQqlXDvhxvYG73sBd/wD4Df7+v4eqIoYgAAAAAElFTkSuQmCC&content=00020101021126950014BR.GOV.BCB.PIX2573spi.dev.cloud.itau.com.br/documentos/198e49c5-2330-4ad7-9d0b-967c7b5371225204000053039865802BR5923PMD Gotham NegA cios ME6009SAO PAULO62410503***50300017BR.GOV.BCB.BRCODE01051.0.063040866",
"userPaymentOptionId": "8179511",
"card": {}
},
"transactionStatus": "REDIRECT",
"sessionToken": "485b3e6f-64e6-47ca-a189-66dc20b1daed",
"clientUniqueId": "uniqueIdCC",
"internalRequestId": 20295521,
"status": "SUCCESS",
"errCode": 0,
"reason": "",
"merchantId": "<>",
"merchantSiteId": "178906",
"version": "1.0",
"clientRequestId": "20220526171319"
}
After the transaction is processed, Nuvei sends a Direct Merchant Notification (DMN) that includes the result of the transaction to urlDetails.notificationUrl, which Nuvei recommends including in the /payment request.
Example /payment DMN with Status=PENDING
...'ppp_status=PENDING&Status=PENDING&ExErrCode=0&ErrCode=0&errApmCode=0&errApmDescription=&errScCode=0&errScDescription=&Reason=&ReasonCode=0&PPP_TransactionID=60190709648&userid=c722d046-9e2d-4c73-a766-97815ac7a025&merchant_unique_id=1d855885-d9ea-534e-a257-8f8e748f9013&customData=&productId=&first_name=AMANDA&last_name=PONTES+RAMOS&email=amandap.ramos%40outlook.com¤cy=BRL&pmDisplayName=44192881837&clientUniqueId=1d855885-d9ea-534e-a257-8f8e748f9013&customField1=c722d046-9e2d-4c73-a766-97815ac7a025&customField2=production&customField3=g3QAAAACZAASY2xpZW50X3NvdXJjZV90eXBlbQAAAApNb2JpbGVfbmV3ZAAKc2Vzc2lvbl9pZG0AAAAUMzAxMTk5MzE3MTUzNDIzODIwNzQ%253D&customField4=com&customField5=quick&customField6=com.MGA.BR.superbet.online&customField7=%7B%22affid%22%3A%22577%22%2C%22btag%22%3A%22a_4271b_378c_%22%2C%22utm_campaign%22%3A%224271%22%2C%22utm_medium%22%3A%22378%22%2C%22utm_source%22%3A%22577%22%7D&customField8=&customField9=&customField10=&customField11=&customField12=&customField13=&customField14=&customField15=&invoice_id=&address1=Rua+santa+Nat%C3%A1lia&address2=&country=Brazil&state=&city=Pariquera-A%C3%A7u&zip=11930-000&phone1=13996170595&phone2=&phone3=&client_ip=170.246.69.97&nameOnCard=&cardNumber=&bin=&noCVV=&acquirerId=&acquirerBank=Paymentez2-PI&expMonth=&expYear=&Token=&tokenId=&AuthCode=&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=253478&merchant_status=&action=&requestVersion=&message=PENDING&merchantLocale=&unknownParameters=&payment_method=apmgw_PIX&ID=&merchant_id=5113647955097400163&responseTimeStamp=2024-05-10.12%3A00%3A02&buyButtonProductId=&webMasterId=&appliedPromotions=&uniqueCC=&transactionType=Sale&externalEmail=&cardCompany=&eci=&user_token_id=c722d046-9e2d-4c73-a766-97815ac7a025&userPaymentOptionId=4345632228&TransactionID=1620000000053225273&ExternalaccountID=44192881837&externalTransactionId=PME-132689953&APMReferenceID=AB56F28089120DA211D8D16F5C44B26A&orderTransactionId=63272214248&totalAmount=30.00&dynamicDescriptor=SB+GLOBAL+MARKETS+LIMITED&item_name_1=NA&item_number_1=&item_amount_1=30.00&item_quantity_1=1&item_discount_1=0.00&item_handling_1=0.00&item_shipping_1=0.00&feeAmount=&amountWithoutFee=&houseNumber=&customCurrency=&upoRegistrationDate=20240510&type=DEPOSIT&clientRequestId=1d855885-d9ea-534e-a257-8f8e748f9013&relatedTransactionId=&sessionId=25fd8bb4812e2fb7ed2597e49558&responsechecksum=7bd2604ee3dd7de64f7d4f6955b3fc00755178e7b281ae03ffcc56fd84d68df2&advanceResponseChecksum=827795c892e509750c020d29d8764468091e3c135a0ba6ca798f403f6ed276f0',
Example /payment DMN with Status=APPROVED
...'ppp_status=OK&Status=APPROVED&ExErrCode=0&ErrCode=0&errApmCode=0&errApmDescription=&errScCode=0&errScDescription=&Reason=&ReasonCode=0&PPP_TransactionID=60190709648&userid=c722d046-9e2d-4c73-a766-97815ac7a025&merchant_unique_id=1d855885-d9ea-534e-a257-8f8e748f9013&customData=&productId=&first_name=AMANDA&last_name=PONTES+RAMOS&email=amandap.ramos%40outlook.com¤cy=BRL&pmDisplayName=44192881837&clientUniqueId=1d855885-d9ea-534e-a257-8f8e748f9013&customField1=c722d046-9e2d-4c73-a766-97815ac7a025&customField2=production&customField3=g3QAAAACZAASY2xpZW50X3NvdXJjZV90eXBlbQAAAApNb2JpbGVfbmV3ZAAKc2Vzc2lvbl9pZG0AAAAUMzAxMTk5MzE3MTUzNDIzODIwNzQ%253D&customField4=com&customField5=quick&customField6=com.MGA.BR.superbet.online&customField7=%7B%22affid%22%3A%22577%22%2C%22btag%22%3A%22a_4271b_378c_%22%2C%22utm_campaign%22%3A%224271%22%2C%22utm_medium%22%3A%22378%22%2C%22utm_source%22%3A%22577%22%7D&customField8=&customField9=&customField10=&customField11=&customField12=&customField13=&customField14=&customField15=&invoice_id=&address1=Rua+santa+Nat%C3%A1lia&address2=&country=Brazil&state=&city=Pariquera-A%C3%A7u&zip=11930-000&phone1=13996170595&phone2=&phone3=&client_ip=170.246.69.97&nameOnCard=&cardNumber=&bin=&noCVV=&acquirerId=&acquirerBank=Paymentez2-PI&expMonth=&expYear=&Token=&tokenId=&AuthCode=&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=253478&merchant_status=&action=&requestVersion=&message=APPROVED&merchantLocale=&unknownParameters=&payment_method=apmgw_PIX&ID=&merchant_id=5113647955097400163&responseTimeStamp=2024-05-10.12%3A00%3A35&buyButtonProductId=&webMasterId=&appliedPromotions=&uniqueCC=&transactionType=Sale&externalEmail=&cardCompany=&eci=&user_token_id=c722d046-9e2d-4c73-a766-97815ac7a025&userPaymentOptionId=4345632228&TransactionID=1620000000053225273&ExternalaccountID=44192881837&externalTransactionId=PME-132689953&APMReferenceID=AB56F28089120DA211D8D16F5C44B26A&orderTransactionId=63272214248&totalAmount=30.00&dynamicDescriptor=SB+GLOBAL+MARKETS+LIMITED&item_name_1=NA&item_number_1=&item_amount_1=30.00&item_quantity_1=1&item_discount_1=0.00&item_handling_1=0.00&item_shipping_1=0.00&feeAmount=&amountWithoutFee=&houseNumber=&customCurrency=&upoRegistrationDate=20240510&type=DEPOSIT&clientRequestId=1d855885-d9ea-534e-a257-8f8e748f9013&relatedTransactionId=&apmPayerInfo=%7B%22id%22%3A%22E316801512024020621305XpdkDUXUZ1%22%2C%22bankName%22%3A%22Travelex+Banco+de+C%C3%A2mbio+S.A.%22%2C%22bankBranchNumber%22%3A%226930%22%2C%22bankAccountTypeName%22%3A%22payment%22%2C%22bankAccountNumber%22%3A%223928252076778520%22%2C%22ispb%22%3A%2211703662%22%2C%22personalId%22%3A%2212533166782%22%7D&responsechecksum=767602bc9af1522a084d6f5953226064f045d4f3d90056916c64c8b60b630c5b&advanceResponseChecksum=8cfeb388b44d237d0e945c7091a304ce8bac6135c2effa385a5b270dd22ee9d4',
Example /payment DMN with Status=DECLINED
...'ppp_status=FAIL&Status=DECLINED&ExErrCode=0&ErrCode=9&errApmCode=9&errApmDescription=validation+failure&errScCode=1133&errScDescription=Rejected+by+carrier.&Reason=Rejected+by+carrier.&ReasonCode=1133&PPP_TransactionID=60156614398&userid=4c35d3fc-8be6-4cc4-b484-cc02279b28e6&merchant_unique_id=13661d96-845f-5dfd-9eaa-e39ffa603650&customData=&productId=&first_name=SANDRA&last_name=NUNES+BORGES+ROMEO&email=snbromeo%40hotmail.com¤cy=BRL&pmDisplayName=00863330622&clientUniqueId=13661d96-845f-5dfd-9eaa-e39ffa603650&customField1=4c35d3fc-8be6-4cc4-b484-cc02279b28e6&customField2=production&customField3=g3QAAAACZAASY2xpZW50X3NvdXJjZV90eXBlbQAAAApNb2JpbGVfbmV3ZAAKc2Vzc2lvbl9pZG0AAAAUMjQyODY1MzE3MTUyODg0Mjc2NjY%253D&customField4=com&customField5=quick&customField6=com.MGA.BR.superbet.online&customField7=%7B%7D&customField8=&customField9=&customField10=&customField11=&customField12=&customField13=&customField14=&customField15=&invoice_id=&address1=Rua+Bernardo+dos+santos&address2=&country=Brazil&state=&city=S%C3%A3o+Paulo&zip=05542-000&phone1=11976366076&phone2=&phone3=&client_ip=186.220.125.212&nameOnCard=&cardNumber=&bin=&noCVV=&acquirerId=&acquirerBank=Paymentez2-PI&expMonth=&expYear=&Token=&tokenId=&AuthCode=&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=253478&merchant_status=&action=&requestVersion=&message=DECLINED&merchantLocale=&unknownParameters=&payment_method=apmgw_PIX&ID=&merchant_id=5113647955097400163&responseTimeStamp=2024-05-09.21%3A00%3A40&buyButtonProductId=&webMasterId=&appliedPromotions=&uniqueCC=&transactionType=Sale&externalEmail=&cardCompany=&eci=&user_token_id=4c35d3fc-8be6-4cc4-b484-cc02279b28e6&userPaymentOptionId=4341941438&TransactionID=1620000000052479160&ExternalaccountID=00863330622&externalTransactionId=PME-132552351&APMReferenceID=7FA7E5A94EA3EBA7F9F71E4CD2B3EF17&orderTransactionId=63228781388&totalAmount=50.00&dynamicDescriptor=SB+GLOBAL+MARKETS+LIMITED&item_name_1=NA&item_number_1=&item_amount_1=50.00&item_quantity_1=1&item_discount_1=0.00&item_handling_1=0.00&item_shipping_1=0.00&feeAmount=&amountWithoutFee=&houseNumber=&customCurrency=&upoRegistrationDate=20240509&type=DEPOSIT&clientRequestId=13661d96-845f-5dfd-9eaa-e39ffa603650&relatedTransactionId=&sessionId=f287630821426a6e571535f2f6a2&responsechecksum=c519549d3274733af066558ef6b2d6d7e088636e8326862d19900196f86aa0b4&advanceResponseChecksum=59e8d31fd95479cfaea1d6c1e1c0f3e2e11ea74d9d0d83e77775c6a817124e5a',
Payment (Deposit) with Bank Detail Verification
Nuvei offers a bank detail verification service that helps merchants comply with recent gambling regulations enacted in Brazil. These regulations require merchants to ensure that all winnings and prizes are paid to bank accounts that belong to the user. To enable bank detail verification for a merchant, contact Nuvei’s Integration Team.
Merchants with bank detail verification enabled can perform deposits with verification using REST API or Cashier.
Press tab to open…
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– Unique customer identifier in merchant system.amountcurrencypaymentOption.alternativePaymentMethodclass containing:paymentMethod: “apmgw_PIX“personal_id
deviceDetailsclass containing:ipAddressbillingAddressclass containing:firstName,lastName,address,phone,zip,city,email,countryuserDetailsclass containing:firstName,lastName,address,phone,zip,city,email,countryverificationDetails.bankAccountsarray of the following parameters for at least one bank account:bankIdbranchIdbankAccountNumber
Example /payment Request with verificationDetails.bankAccounts
{
"sessionToken": "<sessionToken from /getSessionToken>",
"merchantId": "<merchantId>",
"merchantSiteId": "<merchantSiteId>",
"clientUniqueId": "<unique transaction ID in merchant system>",
"clientRequestId": "<unique request ID in merchant system>",
"amount": "200",
"currency": "BRL",
"userTokenId": "<unique customer identifier in merchant system>",
"paymentOption": {
"alternativePaymentMethod": {
"paymentMethod": "apmgw_PIX",
"personal_id": "<personal ID or CPF>"
}
},
"verificationDetails": {
"bankAccounts": [
{
"bankId": "13370835",
"branchId": "0001",
"bankAccountNumber": "47016"
},
{
"bankId": "543",
"branchId": "765",
"bankAccountNumber": "97898798797987"
}
]
},
"deviceDetails": {
"ipAddress": "<customer's IP address>"
},
"billingAddress": {
"firstName": "John",
"lastName": "Smith",
"address": "Praça dos 3 Poderes",
"phone": "556132155456",
"zip": "70160",
"city": "Brasília",
"email": "[email protected]",
"country": "BR"
},
"userDetails": {
"firstName": "John",
"lastName": "Smith",
"address": "Praça dos 3 Poderes",
"phone": "556132155456",
"zip": "70160",
"city": "Brasília",
"email": "[email protected]",
"country": "BR"
},
"timeStamp": "<YYYYMMDDHHmmss>",
"checksum": "<calculated checksum>"
}
After the transaction is processed, Nuvei sends a Direct Merchant Notification (DMN) that includes the result of the transaction and bank account details in apmPayerInfo to urlDetails.notificationUrl, which Nuvei recommends including in the /payment request.
When creating the HTTPS request, include a URL-encoded verificationDetails.bankAccounts array of the following parameters for at least one bank account:
bankIdbranchIdbankAccountNumber
Send the user’s CPF (Cadastro de Pessoas Físicas or Natural Persons Register) in pix_cpf or in personal_id. When making the first deposit, this field in My Payment Methods on the Deposit page is prepopulated. Depending on configuration, the field can be editable or not editable.
The example Cashier deposit request below includes a URL-encoded verificationDetails.bankAccounts array for:
verificationDetails = {
"bankAccounts": [{
"bankId": "122"
"branchId": "123"
"bankAccountNumber": "9877987987987"
},
{
"bankId": "123"
"branchId": "12312"
"bankAccountNumber": "987712387987987"
}
]
}
Example URL-Encoded verificationDetails
verificationDetails%20%3D%20%7B%0A%09%22bankAccounts%22%3A%20%5B%7B%0A%09%09%09%22bankId%22%3A%20%22122%22%0A%09%09%09%22branchId%22%3A%20%22123%22%0A%09%09%09%22bankAccountNumber%22%3A%20%229877987987987%22%0A%09%09%7D%2C%0A%09%09%7B%0A%09%09%09%22bankId%22%3A%20%22123%22%0A%09%09%09%22branchId%22%3A%20%2212312%22%0A%09%09%09%22bankAccountNumber%22%3A%20%22987712387987987%22%0A%09%09%7D%0A%09%5D%0A%7D
Example Cashier Deposit Request with verificationDetails
Nuvei recommends testing the request by sending it through a web browser. The merchant can test HTTPS requests manually with an HTTP GET request. However, to send Cashier requests in a full production environment, the merchant’s website must send HTTP POST requests.
After the transaction is processed, Nuvei sends a Direct Merchant Notification (DMN) that includes the result of the transaction and bank account details in apmPayerInfo to notify_url, which Nuvei recommends including in the Cashier request. In some circumstances, apmPayerInfo includes personalId as the last parameter.
- REST API
-
Follow these steps to perform a payment using Nuvei REST API integration:
1. Generate a
sessionTokenPress here for details.
2. Send a
/paymentRequestPerform the payment by sending a
/paymentrequest with its mandatory parameters including:userTokenId– Unique customer identifier in merchant system.amountcurrencypaymentOption.alternativePaymentMethodclass containing:paymentMethod: “apmgw_PIX“personal_id
deviceDetailsclass containing:ipAddressbillingAddressclass containing:firstName,lastName,address,phone,zip,city,email,countryuserDetailsclass containing:firstName,lastName,address,phone,zip,city,email,countryverificationDetails.bankAccountsarray of the following parameters for at least one bank account:bankIdbranchIdbankAccountNumber
Example
/paymentRequest withverificationDetails.bankAccounts{ "sessionToken": "<sessionToken from /getSessionToken>", "merchantId": "<merchantId>", "merchantSiteId": "<merchantSiteId>", "clientUniqueId": "<unique transaction ID in merchant system>", "clientRequestId": "<unique request ID in merchant system>", "amount": "200", "currency": "BRL", "userTokenId": "<unique customer identifier in merchant system>", "paymentOption": { "alternativePaymentMethod": { "paymentMethod": "apmgw_PIX", "personal_id": "<personal ID or CPF>" } }, "verificationDetails": { "bankAccounts": [ { "bankId": "13370835", "branchId": "0001", "bankAccountNumber": "47016" }, { "bankId": "543", "branchId": "765", "bankAccountNumber": "97898798797987" } ] }, "deviceDetails": { "ipAddress": "<customer's IP address>" }, "billingAddress": { "firstName": "John", "lastName": "Smith", "address": "Praça dos 3 Poderes", "phone": "556132155456", "zip": "70160", "city": "Brasília", "email": "[email protected]", "country": "BR" }, "userDetails": { "firstName": "John", "lastName": "Smith", "address": "Praça dos 3 Poderes", "phone": "556132155456", "zip": "70160", "city": "Brasília", "email": "[email protected]", "country": "BR" }, "timeStamp": "<YYYYMMDDHHmmss>", "checksum": "<calculated checksum>" }After the transaction is processed, Nuvei sends a Direct Merchant Notification (DMN) that includes the result of the transaction and bank account details in
apmPayerInfotourlDetails.notificationUrl, which Nuvei recommends including in the/paymentrequest. - Cashier
-
When creating the HTTPS request, include a URL-encoded
verificationDetails.bankAccountsarray of the following parameters for at least one bank account:bankIdbranchIdbankAccountNumber
Send the user’s CPF (Cadastro de Pessoas Físicas or Natural Persons Register) in
pix_cpfor inpersonal_id. When making the first deposit, this field in My Payment Methods on the Deposit page is prepopulated. Depending on configuration, the field can be editable or not editable.The example Cashier deposit request below includes a URL-encoded
verificationDetails.bankAccountsarray for:verificationDetails = { "bankAccounts": [{ "bankId": "122" "branchId": "123" "bankAccountNumber": "9877987987987" }, { "bankId": "123" "branchId": "12312" "bankAccountNumber": "987712387987987" } ] }Example URL-Encoded
verificationDetailsverificationDetails%20%3D%20%7B%0A%09%22bankAccounts%22%3A%20%5B%7B%0A%09%09%09%22bankId%22%3A%20%22122%22%0A%09%09%09%22branchId%22%3A%20%22123%22%0A%09%09%09%22bankAccountNumber%22%3A%20%229877987987987%22%0A%09%09%7D%2C%0A%09%09%7B%0A%09%09%09%22bankId%22%3A%20%22123%22%0A%09%09%09%22branchId%22%3A%20%2212312%22%0A%09%09%09%22bankAccountNumber%22%3A%20%22987712387987987%22%0A%09%09%7D%0A%09%5D%0A%7D
Example Cashier Deposit Request with
verificationDetailsNuvei recommends testing the request by sending it through a web browser. The merchant can test HTTPS requests manually with an HTTP GET request. However, to send Cashier requests in a full production environment, the merchant’s website must send HTTP POST requests.
After the transaction is processed, Nuvei sends a Direct Merchant Notification (DMN) that includes the result of the transaction and bank account details in
apmPayerInfotonotify_url, which Nuvei recommends including in the Cashier request. In some circumstances,apmPayerInfoincludespersonalIdas the last parameter.
Example apmPayerInfo Bank Account Details
{"id":"E60701190202206091923DY","bankName":"PIX","bankBranchNumber":"0001","bankAccountTypeName":"savings","bankAccountNumber":"212495228","ispb":"13370835","personalId":"86622468265"}
Example Payment (Deposit) DMN with Status=APPROVED and apmPayerInfo
...'ppp_status=OK&Status=APPROVED&ExErrCode=0&ErrCode=0&errApmCode=0&errApmDescription=&errScCode=0&errScDescription=&Reason=&ReasonCode=0&PPP_TransactionID=43965911&userid=S8NJMOCQNNEX0&merchant_unique_id=PP6OD7FSF6XE1&customData=&productId=&first_name=John&last_name=Smith&email=john.smith%40email.com¤cy=BRL&pmDisplayName=86622468265&clientUniqueId=PP6OD7FSF6XE1&customField1=&customField2=&customField3=&customField4=&customField5=&customField6=&customField7=&customField8=&customField9=&customField10=&customField11=&customField12=&customField13=&customField14=&customField15=&invoice_id=&address1=Pra%C3%A7a%20dos%203%20Poderes&address2=&country=Brazil&state=&city=Brasília&zip=70160&phone1=556132155456&phone2=&phone3=&client_ip=42.53.161.13&nameOnCard=&cardNumber=&bin=&noCVV=&acquirerId=&acquirerBank=Paymentez2-PI&expMonth=&expYear=&Token=&tokenId=&AuthCode=&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=126006&merchant_status=&action=&requestVersion=&message=APPROVED&merchantLocale=&unknownParameters=&payment_method=apmgw_PIX&ID=&merchant_id=2502136204546424962&responseTimeStamp=2024-10-17.06%3A35%3A25&buyButtonProductId=&webMasterId=&appliedPromotions=&uniqueCC=&transactionType=Sale&externalEmail=&cardCompany=&eci=&user_token_id=S8NJMOCQNNEX0&userPaymentOptionId=2153471611&TransactionID=2610000000000074344&ExternalaccountID=86622468265&externalTransactionId=PME-20389&APMReferenceID=AEB7773D11F4EC93B8447A8B62E56D8B&orderTransactionId=25163611&totalAmount=200&dynamicDescriptor=&item_name_1=NA&item_number_1=&item_amount_1=200&item_quantity_1=1&item_discount_1=0.00&item_handling_1=0.00&item_shipping_1=0.00&feeAmount=&amountWithoutFee=&houseNumber=&customCurrency=&externalToken_blockedCard=&externalToken_cardAcquirerId=&externalToken_cardAcquirerName=&externalToken_cardBin=&externalToken_cardBrandId=&externalToken_cardBrandName=&externalToken_cardExpiration=&externalToken_cardLength=&externalToken_cardMask=&externalToken_cardName=&externalToken_cardTypeId=&externalToken_cardTypeName=&externalToken_clubName=&externalToken_creditCompanyId=&externalToken_creditCompanyName=&externalToken_extendedCardType=&externalToken_Indication=&externalToken_tokenValue=&externalToken_tokenProvider=&ECIRaw=&cryptogram=&maskedNetworkTokenNumber=&upoRegistrationDate=20241017&type=DEPOSIT&clientRequestId=F7RH6M94GBF4Y&relatedTransactionId=&apmPayerInfo=%7B%22id%22%3A%22E60701190202206091923DY%22%2C%22bankName%22%3A%22PIX%22%2C%22bankBranchNumber%22%3A%220001%22%2C%22bankAccountTypeName%22%3A%22savings%22%2C%22bankAccountNumber%22%3A%22212495228%22%2C%22ispb%22%3A%2213370835%22%2C%22personalId%22%3A%2286622468265%22%7D&accountVerificationStatus=VERIFIED&sessionId=92fe778830ac81afb3651deb6d5e&responsechecksum=2dfd597846f827752913c9e3470fe0db&advanceResponseChecksum=60986fd3bcb83696899549fa5ee69fb1',
Payout (Withdrawal) Flow
If the merchant has enabled bank detail verification, see Payout (Withdrawal) with Bank Detail Verification.
Follow these steps to perform a payout without bank detail validation:
1. Update the UPO Details
Before performing the payout, the merchant must update the deposit UPO details from the previous payment transaction using pix_key (press here to see possible values) in the /editUPOAPM method.
Example /editUPOAPM Request
{
"merchantId":"<your merchantId>",
"merchantSiteId":"<your merchantSiteId>",
"userTokenId":"<unique user identifier in merchant system>",
"clientRequestId":"<unique request ID in merchant system>",
"userPaymentOptionId":"<UPO received from a previous request>",
"apmData":{
"personal_id":"12123121321",
"pix_key":"+5519999615286"
},
"timeStamp":"<YYYYMMDDHHmmss>",
"checksum":"<calculated checksum>"
}
2. Send a /payout Request
Send a /payout request and include the userPaymentOptionId, which contains the user’s previously stored APM account details. Press here for an example.
After the transaction is processed, Nuvei sends a DMN that includes the result of the transaction to urlDetails.notificationUrl, which Nuvei recommends including in the /payout request.
Example /payout DMN with wdRequestStatus=APPROVED
...'wdOrderId=5423671&wdRequestId=6807471&gwTrxId=2610000000000045032¬ificationType=WITHDRAW_ORDER_NOTIFICATION&merchantSiteId=283391&merchantGwId=2121342249730683446&merchantLocale=en_US&wdRequestState=Closed&wdRequestStatus=Approved&wdOrderStatus=Settled&settlementType=WITHDRAWAL&gwErrCode=0&gwExtendedErrorCode=0&apmTrxId=2610000000068672&apmReferenceId=1F12839CB4039A547D171AE9DD10A954&apmErrorCode=0&firstName=John&lastName=Smith&userTokenId=13395012&zip=28000&city=Madrid&country=ES&phone1=766675709&email=john.smith%40email.com&address=Sancho+el+fuerte+15&amount=9.99&approvedAmount=9.99¤cy=EUR&userId=Lorem&userPMId=2153231141&paymentMethod=apmgw_PIX&version=1.0&pmDisplayName=40804700885+40804700885&client_ip=127.0.0.1&wdOrderAmount=9.99&wdOrderCurrency=BRL&responseTimeStamp=2024-07-25.08%3A19%3A11&feeAmount=0.0&transactionAmount=9.99&merchantUniqueId=merchuniqueid&upoRegistrationDate=20240603&apmPayerInfo=%7B%22id%22%3A%22E20018183202407250818IxJMyJYCJsX%22%2C%22ispb%22%3A%2220018183%22%2C%22bankName%22%3A%22STARKBANKS.A.%22%2C%22beneficiary%22%3A%7B%22bankName%22%3A%22COOPERATIVA+DE+CR%C3%89DITO+CREDIPEU+LTDA.++-+SICOOB+CREDIPEU%22%2C%22bankAccountNumber%22%3A%22%3Cbank_account_number%3E%22%2C%22bankAccountTypeName%22%3A%22payment%22%2C%22bankBranchNumber%22%3A%226149%22%2C%22ispb%22%3A%2266262643%22%7D%7D&acquirerBank=Paymentez7-PI&checksum=ff46288e1e4b509959186744b011804a6693ccc9259dd9e7fbdce34b0c9eaacc',
Payout (Withdrawal) with Bank Detail Verification
Nuvei offers a bank detail verification service that helps merchants comply with recent gambling regulations enacted in Brazil. These regulations require merchants to ensure that all winnings and prizes are paid to bank accounts that belong to the user. To enable bank detail verification for a merchant, contact Nuvei’s Integration Team.
Press tab to open…
Follow these steps to perform a payout with bank detail verification using Nuvei REST API integration:
1. Retrieve and Display the User’s Existing UPOs
Send the customer’s userTokenId in a /getUserUPOs request to retrieve a list of the user’s existing UPOs. If the response does not include any appropriate UPOs, then continue with 2. Create a New UPO.
Appropriate UPOs appear in the response as an array of one or more paymentMethods.userPaymentOptionId values. For each UPO, the response includes the upoData class with:
personal_idpixPhonepix_keypix_bankIdpixCpfpix_bankAccountNumberpix_bankAccountTypeNamepix_branchIdpixEmailpix_key_typepixRandom
Example /getUserUPOs Response
{
"internalRequestId": 1263449718,
"status": "SUCCESS",
"errCode": 0,
"reason": "",
"merchantId": "1005194450256317176",
"merchantSiteId": "243918",
"version": "1.0",
"clientRequestId": "20240827171732",
"paymentMethods": [
{
"userPaymentOptionId": "<UPO received from a previous request>",
"upoName": "40804700885 +5519999615286",
"paymentMethodName": "apmgw_PIX",
"upoStatus": "enabled",
"upoRegistrationDate": "20240827",
"upoRegistrationTime": "171629",
"depositSuccess": "false",
"withdrawSuccess": "false",
"billingAddress": {},
"cccId": 506,
"upoData": {
"personal_id": "40804700885",
"pixPhone": "",
"pix_key_type": "",
"pix_key": "+5519999615286",
"pix_bankId": "13370835",
"pixCpf": "",
"pix_bankAccountNumber": "47016",
"pix_bankAccountTypeName": "PA",
"pix_branchId": "0001",
"pixEmail": "",
"pixRandom": ""
},
"userTokenId": "newtestuserBRL144214124111112124141212"
}
]
}
Display these UPOs as existing bank accounts for the user to choose from, along with an option to add a bank account. If the user selects an existing bank account for the payout, then continue with 3. Send a /payout Request. If the user chooses to add a bank account, then collect:
- Bank ID
- Branch ID
- Account number
- Bank account type – Checking, Savings, Payment, or Salary.
2. (Optional) Create a New UPO
If the user has an existing UPO and decided to use it, then continue with 3. Send a /payout Request.
If the user does not have any existing UPOs or decided to add a bank account, then create a new UPO. Send the customer’s userTokenId in an /addUPOAPM request with its mandatory parameters and the apmData class with:
personal_idpix_key– Press here to see possible values.
Example /addUPOAPM Request
{
"merchantId":"<your merchantId>",
"merchantSiteId":"<your merchantSiteId>",
"clientRequestId":"<unique request ID in merchant system>",
"userTokenId":"<unique user identifier in merchant system>",
"paymentMethodName":"apmgw_PIX",
"apmData":{
"personal_id":"40804700885",
"pix_key":"+5519999615286"
},
"billingAddress":{
"countryCode": "BR",
"email": "[email protected]"
},
"timeStamp":"<YYYYMMDDHHmmss>",
"checksum":"<calculated checksum>"
}
The request returns an encrypted userPaymentOptionId (UPO) representing the user’s APM account details.
Example /addUPOAPM Response
{
"reason":"",
"merchantId":"2502136204546424962",
"errCode":0,
"clientRequestId":"HWMTWQ2RT",
"userPaymentOptionId":8119601,
"internalRequestId":17817221,
"version":"1.0",
"status":"SUCCESS",
"merchantSiteId":"126006"
}
3. Send a /payout Request
Send a /payout request with its mandatory parameters and include:
userPaymentOptionId– From the response to the/getUserUPOsrequest or from the response to the/addUPOAPMrequest.verificationDetails.bankAccountsarray of the following parameters for at least one bank account:bankIdbranchIdbankAccountNumberbankAccountType– Valid values are checking, savings, payment, and salary.
Example /payout Request with verificationDetails.bankAccounts
{
"merchantId": "<your merchantId>",
"merchantSiteId": "<your merchantSiteId>",
"userTokenId": "<unique user identifier in merchant system>",
"clientUniqueId": "<unique transaction ID in merchant system>",
"clientRequestId": "<unique request ID in merchant system>",
"amount": "200",
"currency": "BRL",
"userPaymentOption": {
"userPaymentOptionId": "<UPO received from a previous request>"
},
"verificationDetails": {
"bankAccounts": [
{
"bankId": "13370835",
"branchId": "0001",
"bankAccountNumber": "47016",
"bankAccountType": "savings"
},
{
"bankId": "543",
"branchId": "765",
"bankAccountNumber": "97898798797987",
"bankAccountType": "checking"
}
]
},
"deviceDetails": {
"ipAddress": "<customer's IP address>"
},
"timeStamp": "<YYYYMMDDHHmmss>",
"checksum": "<calculated checksum>"
}
Details of the bank account processed for the payout can appear in alternativePaymentMethod of the response.
Example /payout Response with Bank Account Details
{
"userTokenId": "newtestuserBRL144214124111112124141212",
"clientUniqueId": "20230329125742",
"transactionStatus": "APPROVED",
"gwErrorCode": 0,
"gwExtendedErrorCode": 0,
"userPaymentOptionId": "125699098",
"externalTransactionId": "",
"transactionId": "711000000021780909",
"alternativePaymentMethod": {
"bankId": "13370835",
"branchId": "0001",
"bankAccountNumber": "47016",
"bankName": "BPP IP S.A.",
"bankAccountType": "PA",
"pix_key": "+5519999615286",
"paymentMethod": "apmgw_PIX"
},
"internalRequestId": 639118498,
"status": "SUCCESS",
"errCode": 0,
"reason": "",
"merchantId": "979047831696752006",
"merchantSiteId": "217268",
"version": "1.0"
}
After the transaction is processed, Nuvei sends a DMN that includes the result of the transaction and bank account details in apmPayerInfo to urlDetails.notificationUrl, which Nuvei recommends including in the /payout request.
Example /payout DMN with Status=APPROVED and apmPayerInfo
...'ppp_status=OK&Status=APPROVED&ExErrCode=0&ErrCode=0&errApmCode=0&errApmDescription=&errScCode=0&errScDescription=&Reason=&ReasonCode=&PPP_TransactionID=44190511&userid=LVDURWWEVUWTC&merchant_unique_id=AZO329G4IB4TO&customData=%21&productId=&first_name=&last_name=&email=¤cy=BRL&pmDisplayName=38354821226+38354821226&clientUniqueId=AZO329G4IB4TO&customField1=&customField2=&customField3=&customField4=&customField5=&customField6=&customField7=&customField8=&customField9=&customField10=&customField11=&customField12=&customField13=&customField14=&customField15=&invoice_id=&address1=&address2=&country=&state=&city=&zip=&phone1=&phone2=&phone3=&client_ip=&nameOnCard=&cardNumber=&bin=&noCVV=&acquirerId=&expMonth=&expYear=&Token=&tokenId=&AuthCode=&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=126006&merchant_status=&action=&requestVersion=&message=APPROVED&merchantLocale=&unknownParameters=&payment_method=apmgw_PIX&ID=&merchant_id=2502136204546424962&responseTimeStamp=2024-11-17.12%3A11%3A05&buyButtonProductId=&webMasterId=&appliedPromotions=&uniqueCC=&transactionType=Credit&externalEmail=&cardCompany=&eci=&user_token_id=LVDURWWEVUWTC&userPaymentOptionId=2153527451&TransactionID=2610000000000089666&externalTransactionId=H2H-25610&totalAmount=1.0&dynamicDescriptor=MerchantSiteRestApiDescriptorDarin&feeAmount=&houseNumber=&customCurrency=&externalToken_blockedCard=&externalToken_cardAcquirerId=&externalToken_cardAcquirerName=&externalToken_cardBin=&externalToken_cardBrandId=&externalToken_cardBrandName=&externalToken_cardExpiration=&externalToken_cardLength=&externalToken_cardMask=&externalToken_cardName=&externalToken_cardTypeId=&externalToken_cardTypeName=&externalToken_clubName=&externalToken_creditCompanyId=&externalToken_creditCompanyName=&externalToken_extendedCardType=&externalToken_Indication=&externalToken_tokenValue=&externalToken_tokenProvider=&ECIRaw=&cryptogram=&maskedNetworkTokenNumber=&upoRegistrationDate=20241115&type=DEPOSIT&clientRequestId=&relatedTransactionId=&apmPayerInfo=%7B%22id%22%3A%22E20018183202405241623w2u4RzaG4Km%22%2C%22ispb%22%3A%2220018183%22%2C%22bankName%22%3A%22STARKBANKS.A.%22%2C%22beneficiary%22%3A%7B%22bankName%22%3A%22AQBANK+INSTITUICAO+DE+PAGAMENTO+MOCK+NVLATAM%22%2C%22bankBranchNumber%22%3A%221%22%2C%22bankAccountTypeName%22%3A%22checking%22%2C%22bankAccountNumber%22%3A%22100500435831%22%2C%22ispb%22%3A%2200377239%22%2C%22personalId%22%3A%2201126463523%22%7D%7D&responsechecksum=ea372901d5a315db906635e57b1298c4&advanceResponseChecksum=c021a7b6fd4182dc1782174a0bbcb1ff',
To perform a withdrawal with bank detail verification using Cashier, when integrating the redirection, include a URL-encoded verificationDetails.bankAccounts array of the following parameters for at least one bank account:
bankIdbranchIdbankAccountNumberbankAccountType– Valid values arechecking,savings,payment, andsalary.
The example Cashier withdrawal request below includes a URL-encoded verificationDetails.bankAccounts array for:
verificationDetails = {
"bankAccounts": [{
"bankId": "122"
"branchId": "123"
"bankAccountNumber": "9877987987987"
"bankAccountType":"savings"
},
{
"bankId": "123"
"branchId": "12312"
"bankAccountNumber": "987712387987987"
"bankAccountType":"savings"
}
]
}
Example URL-Encoded verificationDetails
verificationDetails%20%3D%20%7B%20%22bankAccounts%22%3A%20%5B%7B%20%22bankId%22%3A%20%22122%22%20%22branchId%22%3A%20%22123%22%20%22bankAccountNumber%22%3A%20%229877987987987%22%0A%22bankAccountType%22%3A%22savings%22%20%7D%2C%20%7B%20%22bankId%22%3A%20%22123%22%20%22branchId%22%3A%20%2212312%22%20%22bankAccountNumber%22%3A%20%22987712387987987%22%0A%22bankAccountType%22%3A%22savings%22%20%7D%20%5D%20%7D
Example Cashier Withdrawal Request with verificationDetails
Nuvei recommends testing the request by sending it through a web browser. The merchant can test HTTPS requests manually with an HTTP GET request. However, to send Cashier requests in a full production environment, the merchant’s website must send HTTP POST requests.
After the transaction is processed, Nuvei sends a Direct Merchant Notification (DMN) that includes the result of the transaction and bank account details in apmPayerInfo to successUrl, which Nuvei recommends including in the Cashier withdrawal request.
For more information about how to perform a Cashier withdrawal, see the Cashier Withdrawal Guide.
- REST API
-
Follow these steps to perform a payout with bank detail verification using Nuvei REST API integration:
1. Retrieve and Display the User’s Existing UPOs
Send the customer’s
userTokenIdin a/getUserUPOsrequest to retrieve a list of the user’s existing UPOs. If the response does not include any appropriate UPOs, then continue with 2. Create a New UPO.Appropriate UPOs appear in the response as an array of one or more
paymentMethods.userPaymentOptionIdvalues. For each UPO, the response includes theupoDataclass with:personal_idpixPhonepix_keypix_bankIdpixCpfpix_bankAccountNumberpix_bankAccountTypeNamepix_branchIdpixEmailpix_key_typepixRandom
Example
/getUserUPOsResponse{ "internalRequestId": 1263449718, "status": "SUCCESS", "errCode": 0, "reason": "", "merchantId": "1005194450256317176", "merchantSiteId": "243918", "version": "1.0", "clientRequestId": "20240827171732", "paymentMethods": [ { "userPaymentOptionId": "<UPO received from a previous request>", "upoName": "40804700885 +5519999615286", "paymentMethodName": "apmgw_PIX", "upoStatus": "enabled", "upoRegistrationDate": "20240827", "upoRegistrationTime": "171629", "depositSuccess": "false", "withdrawSuccess": "false", "billingAddress": {}, "cccId": 506, "upoData": { "personal_id": "40804700885", "pixPhone": "", "pix_key_type": "", "pix_key": "+5519999615286", "pix_bankId": "13370835", "pixCpf": "", "pix_bankAccountNumber": "47016", "pix_bankAccountTypeName": "PA", "pix_branchId": "0001", "pixEmail": "", "pixRandom": "" }, "userTokenId": "newtestuserBRL144214124111112124141212" } ] }Display these UPOs as existing bank accounts for the user to choose from, along with an option to add a bank account. If the user selects an existing bank account for the payout, then continue with 3. Send a
/payoutRequest. If the user chooses to add a bank account, then collect:- Bank ID
- Branch ID
- Account number
- Bank account type – Checking, Savings, Payment, or Salary.
2. (Optional) Create a New UPO
If the user has an existing UPO and decided to use it, then continue with 3. Send a
/payoutRequest.If the user does not have any existing UPOs or decided to add a bank account, then create a new UPO. Send the customer’s
userTokenIdin an/addUPOAPMrequest with its mandatory parameters and theapmDataclass with:personal_idpix_key– Press here to see possible values.
Example
/addUPOAPMRequest{ "merchantId":"<your merchantId>", "merchantSiteId":"<your merchantSiteId>", "clientRequestId":"<unique request ID in merchant system>", "userTokenId":"<unique user identifier in merchant system>", "paymentMethodName":"apmgw_PIX", "apmData":{ "personal_id":"40804700885", "pix_key":"+5519999615286" }, "billingAddress":{ "countryCode": "BR", "email": "[email protected]" }, "timeStamp":"<YYYYMMDDHHmmss>", "checksum":"<calculated checksum>" }The request returns an encrypted
userPaymentOptionId(UPO) representing the user’s APM account details.Example
/addUPOAPMResponse{ "reason":"", "merchantId":"2502136204546424962", "errCode":0, "clientRequestId":"HWMTWQ2RT", "userPaymentOptionId":8119601, "internalRequestId":17817221, "version":"1.0", "status":"SUCCESS", "merchantSiteId":"126006" }3. Send a
/payoutRequestSend a
/payoutrequest with its mandatory parameters and include:userPaymentOptionId– From the response to the/getUserUPOsrequest or from the response to the/addUPOAPMrequest.verificationDetails.bankAccountsarray of the following parameters for at least one bank account:bankIdbranchIdbankAccountNumberbankAccountType– Valid values are checking, savings, payment, and salary.
Example
/payoutRequest withverificationDetails.bankAccounts{ "merchantId": "<your merchantId>", "merchantSiteId": "<your merchantSiteId>", "userTokenId": "<unique user identifier in merchant system>", "clientUniqueId": "<unique transaction ID in merchant system>", "clientRequestId": "<unique request ID in merchant system>", "amount": "200", "currency": "BRL", "userPaymentOption": { "userPaymentOptionId": "<UPO received from a previous request>" }, "verificationDetails": { "bankAccounts": [ { "bankId": "13370835", "branchId": "0001", "bankAccountNumber": "47016", "bankAccountType": "savings" }, { "bankId": "543", "branchId": "765", "bankAccountNumber": "97898798797987", "bankAccountType": "checking" } ] }, "deviceDetails": { "ipAddress": "<customer's IP address>" }, "timeStamp": "<YYYYMMDDHHmmss>", "checksum": "<calculated checksum>" }Details of the bank account processed for the payout can appear in
alternativePaymentMethodof the response.Example
/payoutResponse with Bank Account Details{ "userTokenId": "newtestuserBRL144214124111112124141212", "clientUniqueId": "20230329125742", "transactionStatus": "APPROVED", "gwErrorCode": 0, "gwExtendedErrorCode": 0, "userPaymentOptionId": "125699098", "externalTransactionId": "", "transactionId": "711000000021780909", "alternativePaymentMethod": { "bankId": "13370835", "branchId": "0001", "bankAccountNumber": "47016", "bankName": "BPP IP S.A.", "bankAccountType": "PA", "pix_key": "+5519999615286", "paymentMethod": "apmgw_PIX" }, "internalRequestId": 639118498, "status": "SUCCESS", "errCode": 0, "reason": "", "merchantId": "979047831696752006", "merchantSiteId": "217268", "version": "1.0" }After the transaction is processed, Nuvei sends a DMN that includes the result of the transaction and bank account details in
apmPayerInfotourlDetails.notificationUrl, which Nuvei recommends including in the/payoutrequest.Example
/payoutDMN withStatus=APPROVED andapmPayerInfo...'ppp_status=OK&Status=APPROVED&ExErrCode=0&ErrCode=0&errApmCode=0&errApmDescription=&errScCode=0&errScDescription=&Reason=&ReasonCode=&PPP_TransactionID=44190511&userid=LVDURWWEVUWTC&merchant_unique_id=AZO329G4IB4TO&customData=%21&productId=&first_name=&last_name=&email=¤cy=BRL&pmDisplayName=38354821226+38354821226&clientUniqueId=AZO329G4IB4TO&customField1=&customField2=&customField3=&customField4=&customField5=&customField6=&customField7=&customField8=&customField9=&customField10=&customField11=&customField12=&customField13=&customField14=&customField15=&invoice_id=&address1=&address2=&country=&state=&city=&zip=&phone1=&phone2=&phone3=&client_ip=&nameOnCard=&cardNumber=&bin=&noCVV=&acquirerId=&expMonth=&expYear=&Token=&tokenId=&AuthCode=&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=126006&merchant_status=&action=&requestVersion=&message=APPROVED&merchantLocale=&unknownParameters=&payment_method=apmgw_PIX&ID=&merchant_id=2502136204546424962&responseTimeStamp=2024-11-17.12%3A11%3A05&buyButtonProductId=&webMasterId=&appliedPromotions=&uniqueCC=&transactionType=Credit&externalEmail=&cardCompany=&eci=&user_token_id=LVDURWWEVUWTC&userPaymentOptionId=2153527451&TransactionID=2610000000000089666&externalTransactionId=H2H-25610&totalAmount=1.0&dynamicDescriptor=MerchantSiteRestApiDescriptorDarin&feeAmount=&houseNumber=&customCurrency=&externalToken_blockedCard=&externalToken_cardAcquirerId=&externalToken_cardAcquirerName=&externalToken_cardBin=&externalToken_cardBrandId=&externalToken_cardBrandName=&externalToken_cardExpiration=&externalToken_cardLength=&externalToken_cardMask=&externalToken_cardName=&externalToken_cardTypeId=&externalToken_cardTypeName=&externalToken_clubName=&externalToken_creditCompanyId=&externalToken_creditCompanyName=&externalToken_extendedCardType=&externalToken_Indication=&externalToken_tokenValue=&externalToken_tokenProvider=&ECIRaw=&cryptogram=&maskedNetworkTokenNumber=&upoRegistrationDate=20241115&type=DEPOSIT&clientRequestId=&relatedTransactionId=&apmPayerInfo=%7B%22id%22%3A%22E20018183202405241623w2u4RzaG4Km%22%2C%22ispb%22%3A%2220018183%22%2C%22bankName%22%3A%22STARKBANKS.A.%22%2C%22beneficiary%22%3A%7B%22bankName%22%3A%22AQBANK+INSTITUICAO+DE+PAGAMENTO+MOCK+NVLATAM%22%2C%22bankBranchNumber%22%3A%221%22%2C%22bankAccountTypeName%22%3A%22checking%22%2C%22bankAccountNumber%22%3A%22100500435831%22%2C%22ispb%22%3A%2200377239%22%2C%22personalId%22%3A%2201126463523%22%7D%7D&responsechecksum=ea372901d5a315db906635e57b1298c4&advanceResponseChecksum=c021a7b6fd4182dc1782174a0bbcb1ff',
- Cashier
-
To perform a withdrawal with bank detail verification using Cashier, when integrating the redirection, include a URL-encoded
verificationDetails.bankAccountsarray of the following parameters for at least one bank account:bankIdbranchIdbankAccountNumberbankAccountType– Valid values arechecking,savings,payment, andsalary.
The example Cashier withdrawal request below includes a URL-encoded
verificationDetails.bankAccountsarray for:verificationDetails = { "bankAccounts": [{ "bankId": "122" "branchId": "123" "bankAccountNumber": "9877987987987" "bankAccountType":"savings" }, { "bankId": "123" "branchId": "12312" "bankAccountNumber": "987712387987987" "bankAccountType":"savings" } ] }Example URL-Encoded
verificationDetailsverificationDetails%20%3D%20%7B%20%22bankAccounts%22%3A%20%5B%7B%20%22bankId%22%3A%20%22122%22%20%22branchId%22%3A%20%22123%22%20%22bankAccountNumber%22%3A%20%229877987987987%22%0A%22bankAccountType%22%3A%22savings%22%20%7D%2C%20%7B%20%22bankId%22%3A%20%22123%22%20%22branchId%22%3A%20%2212312%22%20%22bankAccountNumber%22%3A%20%22987712387987987%22%0A%22bankAccountType%22%3A%22savings%22%20%7D%20%5D%20%7D
Example Cashier Withdrawal Request with
verificationDetailsNuvei recommends testing the request by sending it through a web browser. The merchant can test HTTPS requests manually with an HTTP GET request. However, to send Cashier requests in a full production environment, the merchant’s website must send HTTP POST requests.
After the transaction is processed, Nuvei sends a Direct Merchant Notification (DMN) that includes the result of the transaction and bank account details in
apmPayerInfotosuccessUrl, which Nuvei recommends including in the Cashier withdrawal request.For more information about how to perform a Cashier withdrawal, see the Cashier Withdrawal Guide.
User Experience
Payment
- The user is redirected to the merchant page to complete the transaction.
- The user scans the generated QR code with a mobile device.
- The user authorizes the payment with the mobile device to complete the transaction.
Testing
Testing is possible using CPFs that trigger different scenarios, available at https://services.sandbox.safecharge.com/apm/pix-mock/ui/help. To enable mockup testing for a merchant, contact Nuvei’s Integration Team.
Possible pix_key Values
| Type | Example Value | Notes |
|---|---|---|
| CPF | 40804700885 | An 11-digit CPF |
| [email protected] | ||
| cell | +5519999615286 | 11 digits + (+55) country code |
| key | d49628a0-cc32-41ce-9284-124c1190a5c0 | free text (digits/characters/symbols) up to 40 characters |
Retrieving PIX Balances
To retrieve their account balances with the PIX providers Nuvei offers, merchants can send a Nuvei REST API 2.0 GET /pix/entities/{entity-id}/balances request. For more information, see Retrieving PIX Balances.