The purpose of this guide is to explain how to create a white label transaction in Peru step by step. Monnet has 4 payment methods available in Peru: Online (Internet Banking), Cash (Pay in cash) and Wallet (Digital Wallet) and QR. This option is available for QR payment method.

1200

Currently, the Monnet Payin API has 1 version:

📘

URL

API v3 (for JSON format with an url as response):

Certification:https://cert.monnetpayments.com/api-payin/v3/online-payments

Production: https://payin.api.monnetpayments.com/api-payin/v3/online-payments

V3: Create a Transaction

To create an online payment using Monnet Payments API, you must call the method online-payments as shown in the following example:

🚧

IMPORTANT REMINDER:

All fields must be included on request no matter if they are required or optional. Also pay attention on payinCustomerName (fist name), payinCustomerLastName , payinCustomerEmail and payinCustomerPhone on each case. This four fields must NOT be sent with empty values on any case.

Creation - Online

Request

FieldDescription
payinMerchantIDInteger (Required)
Merchant Identifier for the Payin API.
payinAmountDecimal (Required)
The amount of the transaction. Use 2 decimals.
payinCurrencyString (Required, ISO-4217)
The currency of the transaction
Example
PEN
payinMerchantOperationNumberString (Required, max-lenght = 50)
Reference number of the sale.
This value is used to notify Merchants about a payment.
payinMethodString (Required)
Payment Method Identifier for the Payin API.
EX: QR
payinVerificationString (Required)
HASH SHA512 of:
payinMerchantID+
payinMerchantOperationNumber+
payinAmount+
payinCurrency+
KeyMonnet
payinTransactionOKURLString (Required) (max 250 chars)
URL where the customer will be redirected from the online banking if payment was successful (Must be Https) (max 250 chars)
payinTransactionErrorURLString (Required)
URL where the customer will be redirected from the online banking if payment was wrong.(Must be Https)
payinExpirationTimeInteger (Required)
Time in minutes to expire the token.
Minimum Suggested:
Online: 30 minutes
Cash: 2 hours
payinLanguageString (Required, ISO 639-1)
Example: EN, ES, PT, DE, etc.
payinCustomerEmailString (Required)
Contains the customer's email
payinCustomerNameString (Required)
Contains the customer's first name Max. 30 digit
payinCustomerLastNameString (Required)
Contains the customer's last name. Max. 30 digit
payinCustomerTypeDocumentString (Required)
Contains the customer's type of document. payinCustomerTypeDocument
payinCustomerDocumentString (Required)
Contains the customer's document number
payinCustomerPhoneString (Required)
Contains the customer's mobile number (9 digits)
payinCustomerAddressString (Required)
Customer information
payinCustomerCityString (Required)
Customer information
payinCustomerRegionString (Required)
Customer information (Default value is "Lima" unless different value is indicated by integration team)
payinCustomerCountryString (Required)
Customer information
payinCustomerZipCodeString (Required)
Customer information
payinCustomerShippingNameString (Required)
Customer information
payinCustomerShippingPhoneString (Required)
Customer information
payinCustomerShippingAddressString (Required)
Customer information
payinCustomerShippingCityString (Required)
Customer information
payinCustomerShippingRegionString (Required)
Customer information
payinCustomerShippingCountryString (Required)
Customer information
payinCustomerShippingZipCodeString (Required)
Customer information
payinRegularCustomerString (Optional)
Customer information
payinCustomerIDString (Optional)
Customer information (PSPs must complete submerchant name mandatory)
payinDiscountCouponString (Requied)
Customer information
payinFilterByString (Optional)
Customer information
payinProductIDString (Required)
Product information. Can not be empty, could send a default value i.e. "0"
payinProductDescriptionString (Required)
Product information. Can not be empty, could send a default value i.e. "0"
payinProductAmountString (Required)
Product information. Can not be empty, could send a default value i.e. "0"
payinDateTimeString (Required)
Date of the transaction. Can not be empty, could send a default value i.e. current date
payinProductSkuString (Required)
Product information. Can not be empty, could send a default value i.e. "0"
payinProductQuantityString (Required)
Product information. Can not be empty, could send a default value i.e. "0"
URLMonnet (For API v3)String (Required)
Value in cert environment: https://cert.monnetpayments.com/api-payin/v1/online-payments
Value in prod environment:
https://payin.api.monnetpayments.com/api-payin/v1/online-payments
typePost (For API v3)String (Required)
Value: json

Sample request

Pay attention on fields name format, must be Camel Case as shown below:

data: {
    "payinMerchantID": "00",
  "payinAmount": "00.00",
  "payinCurrency": "PEN",
  "payinMerchantOperationNumber": "0000",
  "payinMethod": "QR",
  "payinVerification": "string",
  "payinCustomerName": "string",
  "payinCustomerLastName": "string",
  "payinCustomerEmail": "correo@dominio.com",
  "payinCustomerPhone": "0000",
  "payinCustomerTypeDocument": "DNI",
  "payinCustomerDocument": "00000000",
  "payinRegularCustomer": "string",
  "payinCustomerID": "string",
  "payinDiscountCoupon": "string",
  "payinLanguage": "ES",
  "payinExpirationTime": "000",
  "payinDateTime": "YYYY-MM-DD",
  "payinTransactionOKURL": "https://okURL.com",
  "payinTransactionErrorURL": "https://ErrorURL.com",
  "payinFilterBy": "string",
  "payinCustomerAddress": "string",
  "payinCustomerCity": "string",
  "payinCustomerRegion": "string",
  "payinCustomerCountry": "Peru",
  "payinCustomerZipCode": "0000",
  "payinCustomerShippingName": "string",
  "payinCustomerShippingPhone": "0000",
  "payinCustomerShippingAddress": "string",
  "payinCustomerShippingCity": "string",
  "payinCustomerShippingRegion": "string",
  "payinCustomerShippingCountry": "Peru",
  "payinCustomerShippingZipCode": "0000",
  "payinProductID": "0000",
  "payinProductDescription": "string",
  "payinProductAmount": "0000",
  "payinProductSku": "string",
  "payinProductQuantity": "0000",
  "URLMonnet": "https://cert.monnetpayments.com/api-payin/v1/online-payments",
  "typePost": "json"
}

Response

🚧

V3

For V3 a URL will be returned in the response for the merchant to redirect the buyer to this url , additional our system will provide the instructions generated by our system for the merchant to elaborate his own payment experience, this include an image of a QR code encoded in Base64 format.

{
    "url": "https://test.test",
    "payinErrorCode": "0000",
    "payinErrorMessage": "Successfull process",
    "payinTrxOperation": "MONTRX4214729724051762681",
    "payinErrorCode": "0000",
    "payinErrorMessage": "Successfull process",
    "payinTrxOperation": "MONTRX1308348025040424112",
    "experienceVoucher": {
        "status": "2",
        "expiration": "2025-04-04 19:00:00",
        "merchant": "QA Niubiz QR",
        "amount": "10.00",
        "currencyCode": "PEN",
        "currencyISO": "S/",
        "operationNumber": "13083480",
        "voucherConfig": "{\"bankList\":[{\"bankCode\":\"YAPE\",\"nroOrder\":1}]}",
        "generalInstructions": [
            {
                "method": "QR",
                "devices": [
                    {
                        "code": "DESKTOP",
                        "instructions": [
                            "Accede a la billetera de tu preferencia.",
                            "Escanea el QR desde el lector de tu billetera preferida.",
                            "Verifica el monto a pagar a nombre de <a class='blue-text'>MONNET.</a>",
                            "Efectúa el pago y ¡listo!"
                        ]
                    },
                    {
                        "code": "MOBILE",
                        "instructions": [
                            "Descarga el QR y accede a la billetera de tu preferencia.",
                            "Ingresa al lector del QR y sube la foto del QR descargada desde tu galería.",
                            "Verifica el monto a pagar a nombre de <a class='blue-text'>MONNET.</a>",
                            "Efectúa el pago y ¡listo!"
                        ]
                    }
                ]
            }
        ],
        "qrCode": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAV4AAAFeAQAAAADlUEq3AAAFYUlEQVR42u1bQa6rSAx0lAVLjsBNwsWQGomLJTfhCFmyQPG4qtxJ/pO+NIvZWPPegpeQAgm72y6Xjfm//zvtF/z/Aj/N7PK87sPLrrtdfPPhNW67P55tP27xKQ5nYKxVBTePHxYb7jwXh+MW/+Oc2TE/rx6HZfLAVQUH7hHnHODjEj+EXZYJV0x2CwvhVlMYrDTYw7+A8LJw9zkdYZEJPudd6oPdw9Obx7mA3OFu/GE9++A/rVEMzPVs8G/bh4g7YRIccJcDO9nx9Y/FXwzMiERP//3wZ/iqBeYfTOIRbcPTTY8fcSh8juB7zD8SUDXwaXro17ga8wfWcwSjkVcscQWW913WKAiO3OjckjZ6bE6YBLHJkUMPQzCaGa9GLwp2xCF+iM2JZeuGpGkIRjxH7+NWVcGORz3hbvzqK6KP8VrnUg66wMtaVXBsSdjgQDqJX1fkFPAc3OUOn89Y8vc0XT1wZ24MQUgnhkW9gx8gxYQ1IqXuyDhFwfH4eFQ41OBz/QqyE6zAwOsiGHk3XUWwKyIdqDro7ty/iEMwBK8NW7W6YJA2ENfIJKw1bjAJMgn/wtPXiFLdGhXBnc2tEwOtJZvTOtiTt9cFbyCukU7CoUgnDYkli2UWj2GmhrRTFQwcKI4zp2Dt0tMIUPB+ozVwrlUFM9ycxiKYlT/9G/t3nVIDAI+91QX3LTmzMNauRTniUDpGVpUgDpXBKg/BAIjDXjWSOwTaXUqHeF1FMAIPSijG3XAyXKuiH8HXeI5fW1kw5TapUXQtGB6I3Iqiy6ZOa70qeENGZHIJQ0AIYBySLvVJMe5lwZEqI4nQoeSnsagl4OBTVscQOVpRMGUMWxCWFmUSROC3kprr+fjs7nJgVf4Ug6FVkQFsTh2OOcWTFFUFg7RlCbVOkjbuOoS7kWxYZaFOLgqWqmETbUBrSKGaVXAs6msMXhbMclglMjQAVVSnFjW4gIpHm8uCUeU/VPm7wmuKxorAZEHLVBicKX9n/XF0nB0JOXMT38aqYIn4KW2wPcqvaiHewWhJEl51wQ2FIqRibNgZLAgbVorcbZQOB97eioLZvhip4oCZU7F5QtBA3H1oPV+/y/9qYBSP7EehmTggkwzS+fsNIPabf6rjamDUUWyUsjWDboa0G9I8k16sZFMVvO3ZtOhxSJW/K18yhzbvKnFBcLICFFhXiahieDbiE3g713PX+euBEYIk7KtH2jixYOx3a7yGRL3XVvXAfFSIio8UApyFcTZuoDG6BjZaUbCfKvBBCEzNtYf62+skAedb36gJTu1GGiNpXtTEMImmTx5aAl4UrM7oogWc42y2CEfvBzVYp8rgYACqrXIG4x1jlykH2xCVu85fDxwRCV9RBIuA7xpxIzPXYJvKr1YVTBlD1NR7qmS9z/XMTxjT6Iu/HtiBIxVPWZjDCkaJn4dLKnJFwW+ewzj0zqGMSJoaIjV4S3D1wFc9Pts1A+IQa2I2aTg6xM5Ut0ZNcOpSo7q+2S0lj6WwetHAqRcFk+wYlfwoQshzKC9y6Ps+rl00rguOhzaUjBzwZv/3pSnvq6eog6hsfcyvHJiTe/wKCMf3WISg9GDcZb/7I4aUA3s6VOU/q467JvcySmle6vU1YlQM/J6elai4QSrmEsgrSBeGn6O2dcBq3rtqK87waXaBW/ehcaLlqzleD4xfe7vGtE1lpZ5YSPjmz7h7NTDfIuFoySrdm56m9zlmqgmNTiGqghlyV+7VicahXkxeN+TX2uDFcmKBjWGNdevVir2/BlUW3LSAD+Jw4HQb5UV2FFl/fL9yUg3MiLRpOGhIsT/fldH7M7M6HF4U/Pu66C/4PwD/A/n6IxoXlQEAAAAAAElFTkSuQmCC"
    }
}
 

Payment

🚧

payinMerchantOperationNumber

The payinMerchantOperationNumber returned in the response is the unique identifier for the transaction inside of Monnet's system. It is not needed to complete the payment, so it shouldn't be shown to the shopper because it may confuse him.

The following table describes the fields that our system will send to the merchant for creating the payment experience:

FieldDescriptionExample
statusPayment statusPENDING_PAYMENT
expirationExpiration date and time2024-05-17 18:05:11
merchantMerchant nameMonnet WU
amountPayment amount1.00
currencyCodeCurrency codePEN
currencyISOISO currency codeS/
operationNumberOperation number42144822
voucherConfigVoucher configurationSee details below
generalInstructionsGeneral InstructionsSee details below
qrCodeQR code image in base 64[QR Code image]

VoucherConfig Details

FieldDescriptionExample
bankListBank avalaible with QR code enabled.See details below

BankList

FieldDescriptionExample
bankCodeBank with QR enabled["YAPE"]
nroOrderBank order1

GeneralInstructions

FieldDescriptionExample
methodPayment method availableQR
devicesAvailable devicesSee details below

Devices

FieldDescriptionExample
codeDevice TypeDESKTOP/MOBILE
instructionsAvailable payment intructions per device"Accede a la billetera de tu preferencia.",
"Escanea el QR desde el lector de tu billetera preferida.",
"Verifica el monto a pagar a nombre de MONNET.", "Efectúa el pago y ¡listo!"