The purpose of this guide is to provide a step-by-step explanation of how to create a Deeplink transaction in Peru. This feature is available for the new payment option via Deeplinks.
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 (first name), payinCustomerLastName , payinCustomerEmail, payinExpirationTime and payinCustomerPhone on each case. This five fields must NOT be sent with empty values on any case.
Creation - Online
Request
| Field | Description |
|---|---|
| payinMerchantID | Integer (Required) Merchant Identifier for the Payin API. |
| payinAmount | Decimal (Required) The amount of the transaction. Use 2 decimals. |
| payinCurrency | String (Required, ISO-4217) The currency of the transaction Example PEN |
| payinMerchantOperationNumber | String (Required, max-lenght = 50) Reference number of the sale. This value is used to notify Merchants about a payment. |
| payinMethod | String (Required) Payment Method Identifier for the Payin API. BankTransfer_Deeplink |
| payinVerification | String (Required) HASH SHA512 of: payinMerchantID+ payinMerchantOperationNumber+ payinAmount+ payinCurrency+ KeyMonnet |
| payinTransactionOKURL | String (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) |
| payinTransactionErrorURL | String (Required) URL where the customer will be redirected from the online banking if payment was wrong.(Must be Https) |
| payinExpirationTime | Integer (Required) Time in minutes to expire the token. Minimum Suggested: Online: 20 minutes |
| payinLanguage | String (Required, ISO 639-1) Example: EN, ES, PT, DE, etc. |
| payinCustomerEmail | String (Required) Contains the customer's email. Max. 50 chars |
| payinCustomerName | String (Required) Contains the customer's first name Max. 30 digit |
| payinCustomerLastName | String (Required) Contains the customer's last name. Max. 30 digit |
| payinCustomerTypeDocument | String (Required) Contains the customer's type of document. payinCustomerTypeDocument |
| payinCustomerDocument | String (Required) Contains the customer's document number |
| payinCustomerPhone | String (Required) Contains the customer's mobile number (9 digits) |
| payinCustomerAddress | String (Required) Customer information |
| payinCustomerCity | String (Required) Customer information |
| payinCustomerRegion | String (Required) Customer information (Default value is "Lima" unless different value is indicated by integration team) |
| payinCustomerCountry | String (Required) Customer information |
| payinCustomerZipCode | String (Required) Customer information |
| payinCustomerShippingName | String (Required) Customer information |
| payinCustomerShippingPhone | String (Required) Customer information |
| payinCustomerShippingAddress | String (Required) Customer information |
| payinCustomerShippingCity | String (Required) Customer information |
| payinCustomerShippingRegion | String (Required) Customer information |
| payinCustomerShippingCountry | String (Required) Customer information |
| payinCustomerShippingZipCode | String (Required) Customer information |
| payinRegularCustomer | String (Optional) Customer information |
| payinCustomerID | String (Optional) Customer information (PSPs must complete submerchant name mandatory) |
| payinDiscountCoupon | String (Requied) Customer information |
| payinFilterBy | String (Optional) Customer information |
| payinProductID | String (Required) Product information. Can not be empty, could send a default value i.e. "0" |
| payinProductDescription | String (Required) Product information. Can not be empty, could send a default value i.e. "0" |
| payinProductAmount | String (Required) Product information. Can not be empty, could send a default value i.e. "0" |
| payinDateTime | String (Required) Date of the transaction. Can not be empty, could send a default value i.e. current date |
| payinProductSku | String (Required) Product information. Can not be empty, could send a default value i.e. "0" |
| payinProductQuantity | String (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": "20.00",
"payinCurrency": "PEN",
"payinMerchantOperationNumber": "0000",
"payinMethod": "BankTransfer_Deeplink",
"payinVerification": "string",
"payinCustomerName": "string",
"payinCustomerLastName": "string",
"payinCustomerEmail": "[email protected]",
"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
The response includes the deeplinks for the banks or collectors configured in Monnet and the instructions required for the merchant to implement their own payment flow.
{
"payinErrorCode": "0000",
"payinErrorMessage": "Successful process",
"payinTrxOperation": "MONTRX2166833126030982443",
"experienceVoucher": {
"paymentCode": "99800373",
"status": "PENDIENTE_PAGO",
"expiration": "2026-03-01 06:35:03",
"merchant": "Monnet PE",
"amount": "1.00",
"currencyCode": "PEN",
"currencyISO": "S/",
"operationNumber": "86097557",
"deepLinks": [
{
"processor": "BankTransfer_Deeplink",
"collectorId": "Bank1",
"deepLink": "https://monnetpayments.deeplink/demo/link/hola/1",
"order": 1
},
{
"processor": "BankTransfer_Deeplink",
"collectorId": "Bank2",
"deepLink": "https://monnetpayments.deeplink/demo/link/hola/2",
"order": 2
}
]
}
}
Payment
operationNumber
The operationNumber 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:
| Field | Description | Example |
|---|---|---|
| status | Payment status | PENDING_PAYMENT |
| expiration | Expiration date and time | YYYY-MM-DD MM:NN:SS |
| merchant | Merchant name | Merchant Monnet |
| amount | Payment amount | 1.00 |
| currencyCode | Currency code | PEN |
| currencyISO | ISO currency code | S/ |
| operationNumber | Operation number | 42144822 |
| deeplinks | Array of objects, where each element represents a configured payment option (bank or collector) including its corresponding deeplink and execution order. | See details below |
deeplinks
| Field | Description | Example |
|---|---|---|
| processor | Identifies the processing type or payment mechanism used to generate the deeplink. | BankTransfer_Deeplink |
| collectorId | Specifies the target bank or payment provider associated with the deeplink. | Bank1 |
| deepLink | Contains the generated deeplink URL to initiate the payment. | https://monnetpayments.deeplink/demo/link/hola/1 |
| order | Defines the display order | 1 |
Supported Banks for Deeplink Integration
Bank List
📱YAPE
🏦 BCP
🏦 INTERBANK