Create Suscription

The POST /subscription endpoint allows merchants to create a One Click Payment (OCP) subscription, associating a customer with a payment processor in order to authorize future charges without requiring the customer to re-enter their payment details.

This functionality is designed to support a variety of subscription types and device contexts, providing flexibility for merchants in managing payment flows.

Endpoints

πŸ“˜

URL

Certification:<https://cert.subscriptions.payin.monnet.io/api/v1/subscription

Production: <https://subscriptions.payin.monnet.io/api/v1/subscription

πŸ” Authorization Header

All requests to the /create-subscription endpoint must include a custom Authorization header to ensure secure communication and proper merchant validation.

πŸ“₯ Header Required

HeaderValue FormatRequired
AuthorizationBearer SHA512(merchantId + type + customerId + processorCode + keyPayin)βœ… Yes

The Authorization value must be a SHA-512 hash generated by concatenating the following fields:

- `merchantId`: Assigned merchant identifier
- `type`: Operation type (`ON_DEMAND/RECURRENT`)
- `customerId`: End user/customer ID
- `processorCode`: Code of the payment processor
- `keyPayin`: Secret key assigned by Monnet

Field Description

FieldDescription
merchantIdInteger (Required)
Unique identifier generated and assigned by Monnet to each merchant. Required for identifying the merchant across all transactions and API operations.
typeString (Required)
Defines the type of subscription configured for the customer. This determines how and when the charges will be initiated.

/ ON_DEMAND: Charges are triggered manually by the merchant when needed.
/
RECURRENT: Charges are processed automatically at defined intervals (e.g., monthly, weekly).

This field helps Monnet determine the appropriate flow and behavior for the subscription lifecycle.
Example:
**ON_DEMAND**
deviceString (Required)
Specifies the origin device used to initiate the subscription process.
Allowed values: MOBILE, WEB
Example
`MOBILE
customerIdString (Required)
Unique identifier of the customer within the merchant’s system. In Peru, this typically corresponds to the customer's cellphone number, used to associate the subscription with the correct user
Example:
`992984321
processorCodeString (Required)
Code identifying the selected payment processor to be used for the transaction. This value determines the routing of the payment within the Monnet platform.
Example:
`Yape_on_file

This service allows merchants to initiate the creation of a One Click Payment (OCP) subscription, associating a customer with a specific payment processor.

Request Body

The merchant must send a JSON payload with the following structure:

{
  "merchantId": 1073741824,
  "subscriptionDetails": {
    "type": "ON_DEMAND",
    "device": "MOBILE",
    "customerId": "140912518",
    "processorCode": "Yape_on_file"
  }
}

Response Field Description

FieldDescription
subscriptionIdInteger (Required)
Unique identifier generated and assigned by Monnet for each subscription. This value is required to manage and track subscription-related operations within your integration.
statusString (Required)
Indicates the initial status of the subscription. Defaults to PENDING and is used to control the lifecycle of the subscription within the Monnet platform.
deepLinkString (Opcional)
URL that the customer must access to complete the subscription flow. Applicable only when the device type is set to MOBILE.
ErrorDetailsObject Optional
In case of error, a standardized error response will be returned.
systemCodeString (Required)
errorCodeString (Required)
Represents the specific error encountered during the operation.
See to the Error Codes section for a complete list.
ErrorMessageString (Required)
Description of the specific error
See the Error Codes section for a complete list.

Successful Response – 200 OK

If the subscription creation request is valid, the service will respond with a 200 OK status and return a JSON payload containing the subscription details, including a unique identifier and a deepLink for the customer to complete the authorization process.:

When send device MOBILE

{
  "subscriptionId": 1073741824,
  "status": "PENDING",
  "deepLink": "https://yape.com.pe/app/checkout/ocp/subscription?id=17ea8134-723b-435b-8001-efb73a0c48de&service_company=QA%20Yape%20OCP%20PER&partner_code=PEX006&origin_detail=MOBILE"
}

For the mobile scenario, the merchant must perform a redirect to the deeplink provided by OCP provider as response.

When send device WEB

{
  "subscriptionId": 1073741824,
  "status": "PENDING",
  "deepLink": ""
}

For this scenario, you must follow the workflow and instructions provided by OCP provider when accessed from a desktop environment.

Error Response

This response indicates that the subscription transaction could not be processed due to a business or validation error. It provides both a general error message and a detailed list of one or more specific underlying errors

Error Response Field

FieldDescription
errorCodeString (Opcional)
General code representing the main error type. Typically business-level.
See Errors Code
errorMessageString (Required)
Human-readable description of the general error
See Errors Code
errorFieldDetailsArray (Opcional)
List of specific errors encountered during processing
fleldString (Required)
Refers to the affected field.
errorMessageString (Required)
Description of the specific error

Response Body (JSON)

{
    "errorCode": "9099",
    "errorMessage": "error",

}

Error Codes

Error CodeError MessageHTTP Code
E401Unauthorized request401
B401The merchant does not exists200
B402The merchant does not contain the correct country settings200
B403The merchant does not contain the correct currency settings.200
B404The merchant does not contain the correct processor settings200
B422Subscription already exist200
9099error200