Sub-mid information

Guide for PSP (Payment Service Provider) merchants that process payments on behalf of their own sub-merchants through ALPS.

1. What is a PSP with sub-merchants?

A PSP integrates ALPS with a single set of credentials (public_key / secret_key) and, underneath, groups multiple businesses — its sub-merchants. When the PSP processes a shopper's payment, it must tell ALPS which sub-merchant the transaction belongs to.

This is done by adding the sub_merchant_id field inside the shopper_information object, with the sub-merchant's identifier.

2. How to send sub_merchant_id

The transaction creation flow is exactly the same as always (POST to /justpay/check-out/SecurePayment). The only change is that the shopper_information JSON includes one additional key:

ParameterMandatory (PSP)Data typeDescription
sub_merchant_idTrueStringIdentifier of the sub-merchant the transaction belongs to.
📘

shopper_information is always sent as a JSON string (JSON encoded). The sub_merchant_id is just one more key inside that same object, alongside name_shopper, email, etc.

shopper_information example with sub_merchant_id

{
  "name_shopper": "Jon",
  "last_name_Shopper": "Snow",
  "type_doc_identi": "DNI",
  "Num_doc_identi": "92738009",
  "email": "[email protected]",
  "country_code": "+56",
  "Phone": "999763655",
  "sub_merchant_id": "SUBM-00123"
}

3. Full request example (cURL)

Channel 3 (Transbank, CLP cards) as an example. The sub_merchant_id goes inside shopper_information:

curl --request POST \
  --url https://uat-payments.alps.cl/justpay/check-out/SecurePayment \
  --data public_key={your_public_key} \
  --data time=2026-06-12T14:39:09 \
  --data channel=3 \
  --data amount=300 \
  --data currency=CLP \
  --data trans_id=1 \
  --data time_expired=120 \
  --data url_ok=https://yourstore.com/ok \
  --data url_error=https://yourstore.com/error \
  --data signature={calculated_sha256} \
  --data shopper_information='{"name_shopper":"Jon","last_name_Shopper":"Snow","type_doc_identi":"DNI","Num_doc_identi":"92738009","email":"[email protected]","country_code":"+56","Phone":"999763655","sub_merchant_id":"SUBM-00123"}'

The same pattern applies to any channel: just add the sub_merchant_id key to the shopper_information JSON you already send for that channel/country.

4. Important: the signature does NOT change

The shopper_information field is not part of the signature calculation. The signature is built only from:

public_key + time + amount + currency + trans_id + time_expired + url_ok + url_error + channel + secret_key

→ Therefore, adding sub_merchant_id does not affect the signature. You do not need to change your signing logic to integrate sub-merchants. If you get INVALID_SIGNATURE, the cause is in the fields of the chain above, not in shopper_information.

Signature validator: https://payments.alps.cl/justpay/check-out/generateSignature

5. Notification (webhook)

The payment notification flow does not change: ALPS notifies via POST to the PSP's configured URL once the transaction is completed, and you must validate the notification signature (time + channel + amount + currency + trans_id + secret_key, SHA256).

To reconcile the transaction with the correct sub-merchant, use your own trans_id (which you map internally to the sub-merchant) and/or the sub_merchant_id you sent at creation.