Create store and cash register
After creating the application and obtaining the credentials, it is necessary to configure the store and cash register, which will be associated with transactions.
Stores represent physical establishments registered in Mercado Pago and can have one or more cash registers linked. Cash registers correspond to points of sale (POS) and must always be associated with a store, ensuring reconciliation of QR Code payments in physical establishments.

It is possible to create stores and cash registers from your system through our APIs for in-person payments. To do this, follow the steps below.
Create store
To create a store via API, send a POST with the test Access TokenPrivate key of the application created in Mercado Pago, used in the backend during integration development. You can access it in Your integrations > Integration data > Tests > Test credentials. When going to production, replace it with the production Access Token if it is your own integration, or with the Access Token obtained via OAuth in the case of third-party integrations. The test Access Token starts with the prefix `APP_USR`.Access test credentials to the endpoint Create storeAPI. You must add the test account user_idDuring development, use the User ID from the test account. Go to Your integrations > Integration data > Test credentials > Test credentials data and copy the displayed User ID. When going to production, replace it with the User ID from the real Mercado Pago account that will receive the payments. in the path of your request and complete the required parameters with the business details as indicated below.
city_name, state_name, latitude and longitude). Incorrect data can cause errors in tax calculations, directly impacting billing and fiscal compliance of your company.curlcurl -X POST \ 'https://api.mercadopago.com/users/USER_ID/stores'\ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -d '{ "name": "Instore Shop", "business_hours": { "monday": [ { "open": "08:00", "close": "12:00" } ], "tuesday": [ { "open": "09:00", "close": "18:00" } ] }, "external_id": "SHOP001", "location": { "street_number": "0123", "street_name": "Example street name.", "city_name": "City name.", "state_name": "State name.", "latitude": 27.175193925922862, "longitude": 78.04213533235064, "reference": "Near Mercado Pago." } }'
| Parameter | Description and examples | Required |
user_id | Identifier of the Mercado Pago account that receives the money for sales made at the store. During development, use the user_id from the test account, available in Your integrations > Integration data > Test credentials > Test credentials data.When going to production, replace it with the user_id from the real account that will receive payments: If you are performing your ownQR Code integrations to your system for your own use and configured using your application's credentials. integration, you will find this value in the Integration data. If, on the other hand, you are performing an integration for third partiesQR Code integrations to your system on behalf of a seller and configured using credentials obtained through the OAuth security protocol., you will obtain the value in the response to linking through OAuthPrivate key generated through the OAuth security protocol, which allows managing integrations on behalf of third parties. For more information, go to the documentation.OAuth. | Required |
name | Name of the created store. | Required |
business_hours | Business hours. Operating hours are divided by day of the week and up to four opening and closing times per day are allowed. Provide this data so that your store is displayed in the Mercado Pago application with the correct operating hours. | Optional |
external_id | External identifier of the store for the integrator system. Can contain any alphanumeric value up to 60 characters and must be unique for each store. For example, SHOP001. | Obligatorio |
location | This object must contain all store location information. It is important to fill everything correctly , especially the latitude and longitude fields with geographical coordinates, using the simple decimal format and real location data. For example, "latitude": 27.175193925922862 and "longitude": 78.04213533235064, which correspond to the exact location of the Taj Mahal in India. When entering this data correctly, the store will appear on the map at the indicated location. | Required |
If the request was sent correctly, the response will be as the following example:
json{ "id": 1234567, "name": "Instore Shop", "date_created": "2019-08-08T19:29:45.019Z", "business_hours": { "monday": [ { "open": "08:00", "close": "12:00" } ], "tuesday": [ { "open": "09:00", "close": "18:00" } ] }, "location": { "address_line": "Example street name, 0123, City name, State name.", "latitude": 27.175193925922862, "longitude": 78.04213533235064, "reference": "Near Mercado Pago" }, "external_id": "SHOP001" }
In addition to the data sent in the request, the endpoint will return the identifier assigned to the store by Mercado Pago under the id parameter.
Create cash register
To enable sales with Mercado Pago, it is essential that each registered store has at least one cash register linked. To create a cash register and associate it with the previously created store, send a POST including your test Access TokenPrivate key of the application created in Mercado Pago, used in the backend. You can access it in Your integrations > Integration data > Tests > Test credentials. During the integration process, use the test Access Token. Upon completing the integration, replace it with the production Access Token if it is your own integration, or with the Access Token obtained via OAuth for third-party integrations. The test Access Token starts with the prefix `APP_USR`.Access test credentials to the endpoint Create cash registerAPI as shown below.
curlcurl -X POST \ 'https://api.mercadopago.com/v2/pos'\ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'X-Idempotency-Key: UNIQUE_KEY' \ -d '{ "name": "POS-001", "store_id": "1234567", "external_id": "SHOP001POS001", "config": { "qr": { "operating_mode": "pdv" } } }'
| Parameter | Description and examples | Required |
name | Name of the created cash register. | Optional |
store_id | Identifier of the store to which the cash register belongs, assigned to that store by Mercado Pago. It is returned in the response to store creation under the id parameter. Required if external_store_id is not provided. If both are sent, they must refer to the same store. | Conditional |
external_store_id | External identifier of the store, defined by the integrator when creating the store under the external_id parameter. Required if store_id is not provided. If both are sent, they must refer to the same store. | Conditional |
external_id | Unique identifier of the cash register defined by the integrator system. Must be a unique alphanumeric value for each cash register and can contain up to 40 characters. Although optional in the API, it is strongly recommended: it is required to create QR Code orders associated with this cash register. Without this field, payment processing will not be possible. | Optional |
config.qr.operating_mode | Operating mode of the cash register for QR Code payments. Possible values: pdv: attended mode where a cashier is present and processes the transaction. The config.qr.url field must be absent. standalone: non-integrated QR Code mode. The generated QR is static and not linked to any external system; the customer scans and pays directly from the Mercado Pago app without the integrator managing the order. The config.qr.url field must be absent. | Optional |
config.qr.category | MCC code that indicates the cash register category. The code varies depending on the country of operation. If not specified, it remains as a generic category. For more information about the codes, consult the API ReferenceAPI. | Optional |
config.qr.url | URL to get the order from the integrator system when a payment is initiated. The config.qr.url field must be null if operating_mode is pdv or standalone. | Conditional |
If the request was sent correctly, the response will be as the following example.
json{ "id": 1234567, "name": "POS-001", "status": "active", "date_created": "2024-01-15T10:30:00Z", "date_last_updated": "2024-01-15T10:30:00Z", "user_id": 123456, "store_id": "1234567", "external_store_id": "SHOP001", "external_id": "SHOP001POS001", "config": { "qr": { "operating_mode": "pdv" } }, "qr_response": { "uuid": "0977011a027c4b4387e52069da4264deae2946af4dcc44ee98a8f1dbb376c8a1", "image": "https://www.mercadopago.com/instore/merchant/qr/1234567/abc123.png", "template_document": "https://www.mercadopago.com/instore/merchant/qr/1234567/template_abc123.pdf", "template_image": "https://www.mercadopago.com/instore/merchant/qr/1234567/template_abc123.png", "qr_code": "00020101021226940014BR.GOV.BCB.PIX2572pix-qr-h.mercadopago.com/instore/h/p/v2/abc123" } }
See in the table below the description of some of the returned parameters that may be useful to continue with your integration later.
| Parameter | Description |
id | Point of sale creation ID. When registering a point of sale, you will receive a corresponding ID. This ID can be used for various operations, including querying, updating, or deleting its data. |
config | Configuration object for the cash register. It contains the qr configuration node with the operating_mode and, when applicable, category and url. |
qr_response | Static QR code automatically created and associated with the cash register to process point of sale transactions. This QR code is necessary when orders are created in static (static) or hybrid (hybrid) mode. The qr_response object contains the following attributes: uuid: Unique identifier of the QR code associated with this point of sale, represented as a 64-character hexadecimal string (SHA-256 hash). image: URL of the QR code image to be used to perform transactions. template_document: URL of the file (in PDF format) of the template with the QR code to be used to perform transactions. template_image: URL of the file (in image format) of the template with the QR code to be used to process transactions. qr_code: raw QR code string that can be encoded into a QR image by the integrator system. |
status | Current status of the cash register. Possible values: active (enabled and available to receive payments) and inactive (disabled, cannot receive payments). |
user_id | Identifier of the Mercado Pago account that receives money from sales made at the cash register. |
name | Name assigned to the cash register at the time of its creation. |
store_id | Identifier of the store to which the point of sale belongs, assigned to that store by Mercado Pago. |
external_store_id | External identifier of the store, which was assigned by the integrator system at the time of its creation under the external_id parameter. |
external_id | Unique identifier of the cash register defined by the integrator system. |
If both requests were successful, you will have created and configured the store and cash register necessary for QR Code integration.
With the store and cash register created, you can integrate payment processing.