Our Back to Back service enables seamless integration of your payment process by establishing a secure server-to-server connection to our services.
To take advantage of our server-to-server card payment service, it is imperative that your company is PCI certified. We ask that you share your AOC certification with your account manager before beginning the implementation process.
Currently, the Monnet Payin API has 1 version:
URL
API v1 (for JSON format):
Certification:https://sandbox.pci-proxy.com/v1/push/7efeb612e5dda6f1
Production: https://api.pci-proxy.com/v1/push/32dfee54fc151dd3
V1: Payment Processing
To initiate payment processing using the Monnet Payments API, you must call the push method of the endopoint above.
This method receives the payment request and securely channels it through our PCI-compliant processor. The processor handles the transaction authorization flow and returns a response indicating whether the payment has been authorized or declined, based on the applied validation rules and risk parameters.
🌍Countries Available
Argentina
Ecuador
Chile
Mexico
Colombia
Peru
3DS Authentication Flow
In some cases, the payment process may require an additional layer of 3D Secure (3DS) authentication to comply with security standards and enhance transaction protection.
When 3DS is triggered:
- The API response will include a challenge_url.
- The user must be redirected to the challenge_url to complete authentication.
- Once completed, the result is used to finalize the transaction authorization.
This mechanism ensures the cardholder’s identity is validated before completing the transaction, reducing fraud and unauthorized payments.
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, payinCustomerPhone, payinMethod, payinPan, payinCvv and payinCardExpiration on each case. This eight fields must NOT be sent with empty values on any case.
Payment Processing - 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. EX: TCTD, TC, TD. Full List |
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) |
payinTransactionErrorURL | String (Required) (max 250 chars) 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: 30 minutes Cash: 2 hours |
payinLanguage | String (Required, ISO 639-1) Example: EN, ES, PT, DE, etc. |
payinCustomerEmail | String (Required) Contains the customer's email |
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 (8-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/v3/online-payments Value in prod environment: https://payin.api.monnetpayments.com/api-payin/v3/online-payments |
typePost (For API v3) | String (Required) Value: json |
payinPan | String (Required) Enter the card number without separators (MAX. 19; MIN. 8) - This option is available exclusively for PCI certified merchants. |
payinCvv | String (Required) Enter the card security code (MAX. 4; MIN. 3) - This option is only available for PCI certified merchants. |
payinCardExpiration | String (Required) Year and month of card expiration (AAAA-MM) - This option is available exclusively for PCI certified merchants. |
installments | Integer (Optional) Specifies the number of payment installments. Defaults to a single payment if omitted. |
Sample request
Pay attention on fields name format, must be case as shown below:
data: {
"payinMerchantID": "00",
"payinAmount": "00.00",
"payinCurrency": "PEN",
"payinMerchantOperationNumber": "0000",
"payinMethod": "TCTD",
"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/v3/online-payments",
"typePost": "json",
"payinPan": "4517721004856075",
"payinCvv": "123",
"payinCardExpiration": "2025-07",
"installments":"3"
}
Standard Response
Field | Description |
---|---|
url | String No apply, will return empty |
payinErrorCode | String Payin Error code Example 00, 99, 999 View Errors Code - payinErrorCode table |
payinErrorMessage | String Payin Error description Example Transacción creada |
payinTrxOperation | String Transaction ID generated by Monnet Example MONTRX207249992409275755 |
errordetails | Object (Will be returned only for TC/TD/ TCTD methods and ARG Country) See codeErrorTrx, messageErrorTrx |
codeErrorTrx | String (is part of errordetail object) Detail Error Code Example 9090, 9093 View Error Codes - errordetails table |
messageErrorTrx | String (is part of errordetails object) Detail Error description Example Refer to card issuer's specials conditions View Error Codes - errordetails table |
Response - 3DS challenge
Field | Description |
---|---|
url | String No apply, will return empty |
payinErrorCode | String Payin Error code Example 00, 99, 999 View Errors Code - payinErrorCode table |
payinErrorMessage | String Payin Error description Example Transacción creada |
payinTrxOperation | String Transaction ID generated by Monnet Example MONTRX207249992409275755 |
challenge | Object (Will be returned only for TC/TD/ TCTD methods) See url |
url | String (is part of challenge object) url returned by processor Example https://uat-auth.processorCard.com?token=6938098d6fc8454ebc7ddfb69f5432a5&merchantId=a4c8f5f483b74c598f947a7d98bffc75&bin=NDQ1NjUyODA=&callbackUrl=https://cert.payin.experience.monnet.io/api/v1/payin-checkout-experience/common/redirect/url-commerce/KUSHKIPCI?id=MjA4MzQ5NjMsMTUwMDAuMDAsODgx&isSandbox=true%22 |
v1
For v1 The service response will confirm whether the transaction was approved or declined.
Sample Success Response
{
"url": "",
"payinErrorCode": "00",
"payinErrorMessage": "Transaccion autorizada",
"payinTrxOperation": "MONTRX207249992409275755"
}
Standard Sample Error response
{
"url": "",
"payinErrorCode": "99",
"payinErrorMessage": "Transaccion denegada",
"payinTrxOperation": "MONTRX207249992409275755",
}
Extended Sample Error response
{
"url": "",
"payinErrorCode": "99",
"payinErrorMessage": "Transaccion denegada",
"payinTrxOperation": "MONTRX207249992409275755",
"errordetails":{
"codeErrorTrx":"9090",
"messageErrorTrx":"Issuer or switch is inoperative"
}
}
Sample Pending response (3DS Validation)
{
"url": "",
"payinErrorCode": "01",
"payinErrorMessage": "Transaccion Pendiente",
"payinTrxOperation": "MONTRX2083496325052754650",
"challenge": {
"url": "https://uat-auth.processorCard.com?token=6938098d6fc8454ebc7ddfb69f5432a5&merchantId=a4c8f5f483b74c598f947a7d98bffc75&bin=NDQ1NjUyODA=&callbackUrl=https://cert.payin.experience.monnet.io/api/v1/payin-checkout-experience/common/redirect/url-commerce/KUSHKIPCI?id=MjA4MzQ5NjMsMTUwMDAuMDAsODgx&isSandbox=true"
}
}
Error Codes - payinErrorCode
Code | Message Error | Description |
---|---|---|
00 | Transaccion autorizada | Confirmed payment |
01 | Transaccion Pendiente | Transaction with 3DS challenge |
99 | Transaccion denegada | Transaction was declined |
999 | Error | Generic error |
Error Codes - errordetails
codeErrorTrx | messageErrorTrx |
---|---|
9001 | Refer to card issuer |
9002 | Refer to card issuer's special conditions |
9003 | Invalid merchant |
9007 | Pick-up card, special condition |
9012 | Invalid transaction |
9013 | Invalid amount |
9014 | Card number does not exist |
9015 | Issuer or bin number does not exist |
9017 | Customer cancellation |
9019 | Retry Transaction |
9025 | Unable to locate record on file |
9030 | Format error |
9039 | No credit account |
9051 | Not sufficient funds |
9052 | Non-existing current account |
9054 | Expired card |
9055 | Incorrect personal identification number |
9057 | Transaction not permitted to cardholder |
9061 | Effective advance is exceeded |
9062 | Restricted card |
9065 | Merchant has exceeded the number of daily transactions |
9075 | Allowable number of PIN tries exceeded |
9078 | Card not activated |
9080 | Card expiration date invalid |
9089 | Customer info invalid |
9092 | Financial institution or intermediate network facility cannot be found for routing |
9093 | Transaction cannot be completed |
9094 | Duplicate transmission |
9096 | System malfunction |
9097 | Operation Timeout |
9099 | Error |
9005 | Do not honor |
9020 | Invalid response |
9031 | Bank not supported by switch |
9034 | Suspected fraud |
9040 | Requested function not supported |
9041 | Lost card |
9043 | Stolen card, pick-up |
9056 | No card record |
9058 | Transaction not permitted to terminal |
9062 | Restricted card |
9066 | Card acceptor call acquirer's security department |
9068 | Response received too late |
9094 | Duplicate transmission |
9090 | Issuer or switch is inoperative |