# MD for: https://www.mercadopago.com.ar/developers/pt/docs/mp-point/configure-terminal.md \# Configure terminal To continue with the integration of Mercado Pago Point to your system, after \[having created your application\](https://www.mercadopago.com.ar/developers/en/docs/mp-point/create-application) and obtained the appropriate credentials, it is necessary to configure your Point terminal to operate in integrated mode. This configuration ensures that payments made on the terminals can be managed from your system, optimizing efficiency in reconciliation and task management. To configure your Point terminal in integrated mode, you must first \*\*create and configure a store and a point of sale\*\*, and then \*\*associate that terminal to the created store and point of sale\*\*. This allows each reader to be linked not only to a Mercado Pago account, but also to a physical point of sale identified in our system. Finally, with your terminal already linked, you must \*\*activate its operating mode as Point of Sale (PDV)\*\*. Follow the instructions below to correctly perform each step. :::::AccordionComponent{title="Create and configure store and point of sale" pill="1"} Creating stores and points of sale in Mercado Pago is necessary to operate in physical stores with Point terminals and thus maintain reconciliation between your point of sale and Mercado Pago. A \*\*store\*\* represents a physical store within Mercado Pago, which can have one or more associated points of sale. However, \*\*each point of sale only allows one associated terminal in PDV mode\*\*. This means that if you want to integrate more than one terminal, you must create the same number of points of sale and perform their association individually. The creation and subsequent configuration of stores and points of sale can be done through two ways: through the Mercado Pago panel, or via API. The latter option is useful for systems that need to operate with multiple points of sale, as it allows associating multiple stores from the integrating system. Choose the way that best suits your needs and follow the detailed steps as appropriate. ::::TabsComponent :::TabComponent{title="API"} It is possible to create stores and points of sale 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 :toolTipComponent\[test Access Token\]{link="/developers/en/docs/mp-point/create-application#bookmark\_access\_test\_credentials" linkText="Access test credentials" content="Private 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."} to the endpoint :TagComponent{tag="API" text="Create store" href="/developers/en/reference/in-person-payments/point/stores/create-store/post"}. You must add the :toolTipComponent\[test account \`user\_id\`\]{content="During 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. > WARNING > > It is essential to correctly fill in all store location information (\`city\_name\`, \`state\_name\`, \`latitude\` and \`longitude\`). Incorrect data can cause errors in tax calculations, directly impacting billing and fiscal compliance of your company. \`\`\`curl curl -X POST \\ 'https://api.mercadopago.com/users/USER\_ID/stores'\\ -H 'Content-Type: application/json' \\ -H 'Authorization: Bearer ACCESS\_TOKEN' \\ -d '{ "name": "Instore Store", "business\_hours": { "monday": \[ { "open": "08:00", "close": "12:00" } \], "tuesday": \[ { "open": "09:00", "close": "18:00" } \] }, "external\_id": "SUC001", "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 to Mercado Pago" } }' \`\`\` | Parameter | Requirement | Description and examples | |-------------|------------|-----------------------| | \`user\_id\` | Required| 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 :toolTipComponent\[own\]{content="Mercado Pago Point 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\](https://www.mercadopago.com.ar/developers/en/docs/mp-point/resources/application-details). If, on the other hand, you are performing an integration :toolTipComponent\[for third parties\]{content="Mercado Pago Point 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 :toolTipComponent\[linking through OAuth\]{link="/developers/en/docs/mp-point/resources/security/landing-hub" linkText="OAuth" content="Private key generated through the OAuth security protocol, which allows managing integrations on behalf of third parties. For more information, go to the documentation."}. | | \`name\` | Required| Name of the created store. | | \`external\_id\` | Optional | External identifier of the store for the integrator's system. It can contain any alphanumeric value up to 60 characters, and must be unique for each store. For example, \`SUCMercadoPago\`. | | \`location\` | Required| This object must contain all data relating to the store location. You must pay particular attention to completing them correctly with the simple decimal standard, especially the \`latitude\` and \`longitude\` parameters, with the real data of the physical location. For example, \`"latitude": 27.175193925922862\`, and \`"longitude": 78.04213533235064\` correspond to the exact location of the Taj Mahal, in India. | If the request was sent correctly, the response will look like the example below. \`\`\`json { "id": 1234567, "name": "Instore Store", "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 to Mercado Pago" }, "external\_id": "SUC001" } \`\`\` In addition to the data sent in the request, it will return the identifier assigned to that store by Mercado Pago under the id parameter. ### Create point of sale To be able to make sales with Mercado Pago, each created store must contain at least one associated point of sale. It is possible to create a point of sale and associate it with the previously created store by sending a \*\*POST\*\* with the :toolTipComponent\[test Access Token\]{link="/developers/en/docs/mp-point/create-application#bookmark\_access\_test\_credentials" linkText="Access test credentials" content="Private 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."} to the endpoint :TagComponent{tag="API" text="Create point of sale" href="/developers/en/reference/in-person-payments/point/pos/create-pos/post"} as shown below. \`\`\`curl curl -X POST \\ 'https://api.mercadopago.com/pos'\\ -H 'Content-Type: application/json' \\ -H 'Authorization: Bearer ACCESS\_TOKEN' \\ -d '{ "name": "First POS", "store\_id": "12354567", "external\_store\_id": "SUC001", "external\_id": "SUC001POS001", "category": 621102 }' \`\`\` | Parameter | Requirement | Description and examples | |-------------------|------------|-----------------------| | \`name\` | Required | Name of the created point of sale. | | \`store\_id\` | Required | Identifier of the store to which the point of sale belongs, assigned to that store by Mercado Pago. It is returned in the response to the store creation under the \`id\` parameter. | | \`external\_store\_id\` | Optional | External identifier of the store, which was assigned by the integrator's system at the time of its creation under the \`external\_id\` parameter. | | \`external\_id\` | Required | External identifier of the point of sale, defined for the integrator system. It must be a unique value for each point of sale and has a limit of 40 characters. | | \`category\` | Required | MCC code that indicates the category to which the point of sale belongs. You can consult the complete list of options in our \[API Reference\](https://www.mercadopago.com.ar/developers/en/reference/in-person-payments/point/pos/create-pos/post). | If the request was sent correctly, the response will look like the example below. \`\`\`json { "id": 2711382, "qr": { "image": "https://www.mercadopago.com/instore/merchant/qr/2711382/0977011a027c4b4387e52069da4264deae2946af4dcc44ee98a8f1dbb376c8a1.png", "template\_document": "https://www.mercadopago.com/instore/merchant/qr/2711382/template\_0977011a027c4b4387e52069da4264deae2946af4dcc44ee98a8f1dbb376c8a1.pdf", "template\_image": "https://www.mercadopago.com/instore/merchant/qr/2711382/template\_0977011a027c4b4387e52069da4264deae2946af4dcc44ee98a8f1dbb376c8a1.png" }, "status": "active", "date\_created": "2019-08-22T14:11:12.000Z", "date\_last\_updated": "2019-08-25T15:16:12.000Z", "uuid": "0977011a027c4b4387e52069da4264deae2946af4dcc44ee98a8f1dbb376c8a1", "user\_id": 446566691, "name": "First POS", "fixed\_amount": false, "category": 621102, "store\_id": "12354567", "external\_store\_id": "SUC001", "external\_id": "SUC001POS001" } \`\`\` You can see in the table below the description of some of the returned parameters that may be useful for continuing with your integration later. | Parameter | Description | |-------------------|-------------| | \`id\` | Identifier assigned to the point of sale by Mercado Pago. | | \`qr\` | Object that will contain a QR code associated with the created point of sale. It can only be used if you have integrated the \[QR Code\](https://www.mercadopago.com.ar/developers/en/docs/qr-code/overview) payment solution. | | \`status\` | Status of the point of sale creation. | | \`user\_id\` | Identifier of the Mercado Pago account that receives the money for sales made at the point of sale. | | \`name\` | Name assigned to the point of sale 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. It is returned in the response to the store creation under the \`id\` parameter. | | \`external\_store\_id\` | External identifier of the store, which was assigned by the integrator's system at the time of its creation under the \`external\_id\` parameter. | | \`external\_id\` | External identifier of the point of sale, defined for the integrator system at the time of its creation. | > NOTE > > Remember that it is only possible to configure one terminal in PDV mode per point of sale. If you want to integrate multiple terminals, you must create a point of sale for each one of them. If both requests were successful, you will have created and configured the store and point of sale necessary to continue with the configuration of your terminal in PDV mode. ::: :::TabComponent{title="Mercado Pago Panel"} Creating stores and points of sale through the Mercado Pago Panel is the option for those who only need to manage one point of sale and prefer to simplify the process. To do this, log into your \[Mercado Pago account\](https://www.mercadopago.com.ar/home), and follow the instructions below. 1\. In the left side menu, go to \*\*Your business > Stores and points of sale\*\* . 2\. In the "Store list" section, click the \*\*+ Add store\*\* button. 3\. Complete the \*\*Name\*\* and \*\*Address\*\* of your new store, optionally add \*\*Extra data\*\*, if you need more detail, and click \*\*Continue\*\*. 4\. Complete the required information with the \*\*store operating hours\*\*, selecting the days and opening hours. When finished, click \*\*Continue\*\*. > SUCCESS\_MESSAGE > > The options available on this screen adapt to multiple scenarios. It will allow you to select a single schedule for all days of the week, or a different schedule for each one, along with the possibility of entering special schedules for holidays. Choose the option that best suits your store. 5\. Next, you will be on the screen to \*\*create points of sale\*\* associated with the store, where you must assign a \*\*Name\*\*. If you wish, you can create more than one point of sale. > NOTE > > Remember that it is only possible to configure one terminal in PDV mode per point of sale. If you want to integrate multiple terminals, you must create a point of sale for each one of them. 6\. Click the \*\*Continue\*\* button, and you're done! You have created and configured your store and your point of sale. ::: :::: ::::: :::AccordionComponent{title="Associate terminal" pill="2"} The association of the Point terminal to the Mercado Pago account and the created store and point of sale must be performed from the Mercado Pago application on the \*\*mobile device of the receiving account or the one indicated as a collaborator\*\*. This application is available for Android or iOS devices. Start by turning on the Point terminal. You will see the message "\*\*Log in to this device with your Mercado Pago account\*\*" on the screen. There you must choose between the options below. - \*\*I am the business owner\*\*: select this option if you are the owner of the physical store. - \*\*I am a collaborator\*\*: choose this option if your account was designated as a collaborator account by the store owner. Once you have selected the appropriate option, a QR code will appear on the terminal screen, which you must scan with the Mercado Pago mobile application. To do this, access the application and log in with the test seller account, whose username and password are available in \*\*Your integrations > Integration data > Test credentials > Test credentials information\*\*. Then, press the \*\*QR icon\*\* at the bottom and scan the code presented by the terminal. > NOTE > > In the \[Go to production\](https://www.mercadopago.com.ar/developers/en/docs/mp-point/go-to-production) stage, you must repeat this association process using the receiving account or the one designated as a collaborator account, as appropriate. After a few seconds, the Point terminal may request some additional configurations for the store. Follow the instructions displayed on the screen to complete all stages. The terminal will ask you to select the store and point of sale to which you want to associate the terminal, and confirm the address of the store previously created with your Mercado Pago account. When finished, press the \*\*Confirm\*\* button. > NOTE > > If, for some reason, you have more than one store created, make sure you are correctly selecting the one you want to integrate with your Point terminal. Finally, the terminal will ask you to enter a password that will ensure its safe use. Once this process is finished, the screen will display the message "Ready! You can now charge with your Point", and you will have finished associating your terminal to the desired Mercado Pago account, and to the created store and point of sale. ::: :::AccordionComponent{title="Activate PDV mode on the terminal" pill="3"} As the last step in terminal configuration, and for them to be integrated with our API, it is necessary to activate the Point of Sale (PDV) operating mode. To activate PDV mode via API for the first time, you must query the available terminals active in your account by sending a \*\*GET\*\* with the :toolTipComponent\[test Access Token\]{link="/developers/en/docs/mp-point/create-application#bookmark\_access\_test\_credentials" linkText="Access test credentials" content="Private 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."} to the endpoint :TagComponent{tag="API" text="Get terminals" href="/developers/en/reference/in-person-payments/point/terminals/get-terminals/get"}. We recommend filtering the search by optionally using the query params \`store\_id\` and \`pos\_id\`, identifiers returned in the creation of the store and point of sale, respectively. \`\`\`curl curl -X GET \\ 'https://api.mercadopago.com/terminals/v1/list?limit=50&offset=0&store\_id=12354567&pos\_id=23545678'\\ -H 'Content-Type: application/json' \\ -H 'Authorization: Bearer ACCESS\_TOKEN' \\ \`\`\` This call will return a list of terminals linked to the Mercado Pago account, along with their respective associated point of sale and store, and their operating mode. \`\`\`json { "data": { "terminals": \[ { "id": "NEWLAND\_N950\_\_N950NCB801293324", "pos\_id": "23545678", "store\_id": "12354567", "external\_pos\_id": "SUC0101POS", "operating\_mode": "PDV | STANDALONE | UNDEFINED" } \] }, "paging": { "total": 1, "offset": 0, "limit": 50 } } \`\`\` | Parameter | Description | |-------------------------|-------------| | \`terminals.id\` | Unique identifier of the terminal. The format in which this field is returned is \*\*"terminal type + "\_\_" + terminal serial"\*\*. For example, "NEWLAND\_N950\_\_N950NCB801293324". You can identify the Point you want through the last characters of this field, which should match the serial that appears on the back label of the physical terminal. | | \`terminals.pos\_id\` | Identifier of the point of sale to which the Point terminal is associated. | | \`terminals.store\_id\` | Identifier of the store to which the Point terminal is associated. | | \`terminals.operating\_mode\`| Operating mode in which the terminal is functioning at the time of the query. It can be: \- \*\*PDV\*\*: Point of Sale (PDV) operating mode. This is the mode in which the terminal operates when integrated via API and can only receive card payments. \- \*\*STANDALONE\*\*: default terminal configuration. This is the mode in which it operates when \*\*not\*\* integrated via API. \- \*\*UNDEFINED\*\*: the configuration that the terminal has is not recognized. | Since the only operating mode that allows integrating terminals via API is PDV, once you have located the desired Point terminal, you must activate it. To do this, send a \*\*PATCH\*\* with the :toolTipComponent\[test Access Token\]{link="/developers/en/docs/mp-point/create-application#bookmark\_access\_test\_credentials" linkText="Access test credentials" content="Private 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."} to the endpoint :TagComponent{tag="API" text="Update operating mode" href="/developers/en/reference/orders/in-person-payments/point/terminals/update-operation-mode/patch"}, as shown below. > NOTE > > If in the response to the query you find that the terminal you want to process integrated payments with already has PDV mode activated, you do not need to make this request and can continue with \[Payment processing\](https://www.mercadopago.com.ar/developers/en/docs/mp-point/payment-processing). Additionally, if you have already performed the API activation of PDV mode on a terminal, and for some reason you need to configure it again, you can do it directly from the reader, going to \*\*More options > Settings > Pairing mode\*\*. \`\`\`curl curl -X PATCH \\ 'https://api.mercadopago.com/terminals/v1/setup'\\ -H 'Content-Type: application/json' \\ -H 'Authorization: Bearer ACCESS\_TOKEN' \\ -d '{ "terminals": \[ { "id": "NEWLAND\_N950\_\_N950NCB801293324", "operating\_mode": "PDV" } \] }' \`\`\` | Field | Type | Description | |------------------------|--------|-------------| | \`terminals.id\` | \_String\_ | Unique identifier of the terminal whose operating mode you want to modify, obtained in the request to query available terminals. You must send it following the format \*\*"terminal type + "\_\_" + terminal serial"\*\*, as in the following example: "NEWLAND\_N950\_\_N950NCB801293324". | | \`terminals.operating\_mode\` | \_String\_ | Operating mode in which you want to configure the terminal. To integrate your terminal via API, the value must be \`PDV\`, which corresponds to the Point of Sale operating mode. | If the request was successful, the response should return the parameter \`operating\_mode=PDV\`. \`\`\`json { "terminals": \[ { "id": "NEWLAND\_N950\_\_N950NCB801293324", "operating\_mode": "PDV" } \] } \`\`\` > NOTE > > Remember that it is only possible to configure one terminal in PDV mode per point of sale. If you want to integrate multiple terminals, you must create a point of sale for each one of them. To finish configuring your terminal, you must restart it and then verify that it has been applied by going to \*\*More options > Settings > Pairing mode\*\*. If you find that the pairing mode is \*\*Point of Sale (PDV)\*\*, the change in operating mode was effective and you can continue integrating payment processing. :::