# MD for: https://www.mercadopago.com.ar/developers/pt/docs/mp-point/configure-printings.md \# Configure printings The printers of the \*\*Point Smart 1 and 2 terminals\*\* allow printing the purchase ticket and, additionally, \*\*integrate custom printings through the Terminals API\*\*. This function can be useful for those who require printing complementary receipts, such as coupons or even images. > WARNING > > To integrate printings from your Point Smart terminal, you must request the device update by contacting our Support team. This way, you can manage additional printings directly from your Point of Sale system, and obtain them from the terminal to which they are assigned. ## Create printings The printings generated from your system are actions that your point of sale sends to the terminal. Therefore, to create a printing, you must send a \*\*POST\*\* to the endpoint :TagComponent{tag="API" text="Create terminal action" href="/developers/es/reference/in-person-payments/point/impressions/create-terminal/post"} with your :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."}, taking care to correctly send the \*\*mandatory parameters\*\* indicated below. \`\`\`curl curl -X POST \\ 'https://api.mercadopago.com/terminals/v1/actions'\\ -H 'Content-Type: application/json' \\ -H 'X-Idempotency-Key: 0d5020ed-1af6-469c-ae06-c3bec19954bb' \\ -H 'Authorization: Bearer ACCESS\_TOKEN \\ -d '{ "type": "print", "external\_reference": "ext\_ref\_1234", "config": { "point": { "terminal\_id": "NEWLAND\_N950\_\_N950NCB123456789", "subtype": "image" } }, "content": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAB2AAAAdgB+lymcgAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAPqSURBVHic7ZrZaxRBEIe/mJh4xRgDGk8ivqtvIvGESLwQ7wsU/yD/Ah+NURQjIioY8FbwRZ9UEFREvEFjEm83GR96Byab2Zlf9/RuFp0PlsxR1dVTXVXdPRPIycnJycnJ+V+pc9DpANYAU8vc/wXcBZ479qkcLcBmYGaZ+6PAI+C+Z7tj2Ar8AIKU3x9gl0e7HcBbwW4AHPNodxwPxE4EwEtgkie7xy3sjgLtnuyO46tFRwJgnQebU4CBStm1GaFGYLqFPMBBS/k4dgKzLHVkeRsHtFl2AmAf0OSgF+WIg05FHDDboSOtQLeDXshcoMtBryIOaHXoCGRLg8NAg4NeiypY6QgA2A40O+oedtSrKQdMA3Y46K0AljnarJkaEOKSBi7FL6SmagDARkxBU2kgW+2ouQhoAPZYyHeTbTVXcw4AOGQh61r8QmwXThJXsVuOxq3Rlwh2ZgLfM9r6pD5UtWoAmK23ktf7Kb/VVmnBbaufyDOyjUoAPBHs3PFgJ6D8ewNnPnvq2PIEGx2YVPFhZ7HyUGoKTMJidZVCUjE8ir/Q9VoI2/AzKgHwinjH1+EnzcLfWuXB1AjIOgVGWQSsjrneCSz1aEeKANUBWWeAUuJmgyxL3zhq2gF7gcmR86biNYUBUU6qWb5TYEiUawM2RM43oY3YK+C6aMNrBKivw/qAn6Ls7sjxAVGnFxgUZb1GgDqlvMEsmRV2APWY9wXbRJ1e9CiT0rYSKXBWlJ2D+cK0FZghyD8EHgPDYvvSoKnv21QHDAIXMV+PlPX8LmC+2HZP8a8aAV5rgOqAL5iPJ1dE+b3AFkGuAJwuHk9IDVAdEE5RZ0T5drRI6Qc+FI9rPgIALmMiwRc9kWM1AibUAd+BS6JOGkOYuhI9V5iFsLHyvRL8EjlW0yCNPoxDQ9QIqEebXVJpRt+BNUb0mjAOybqri64YARZa6C5KezglAtTR/wb8jpz/YmzouvAGuF1yTU0BEOqA4gDb/I+SNQ1OACMl14Yxb40UJtwB/ZhXaa6cirkW4HE1WGkH/AEuiPqlPMD801Mc3qbCSjsA9L1BKT0J97wthnw6oNyoXAM+im2EFEiuH1WNAJc1QJQC9mnQD7xPuO9tP1CNFAD72SAp/EFPAS8OUCMgaVRuAu/EdkqXvra2otREEQQzb58X2znH2KVvHFV1gPpFKMkBoKfBSUFGTYHUwVMcoIbu05T794AXKTLPgFsebIUkFVKZlaRvatKKVkgnZn0f18ZrYJXYTiPpX5EHi31PRP0QOQ9Yz/h/dwswo1G6YUmiAViA2a6GjGAcU7Bsp4v4r8DDwA08RUBOTk5OTk7Ov8lfFiKY13GwsdoAAAAASUVORK5CYII=" }' \`\`\` | Attribute | Type | Description | |-----------|------|-------------| | \`Authorization\` | \_Header\_ | Refers to either your :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."}. | | \`X-Idempotency-Key\` | \_Header\_ | Idempotency key. This key ensures that each request is processed only once, avoiding duplicates. Use an exclusive value in your request header, such as a UUID V4 or random \_strings\_. | | \`type\` | \_Body\_. \_String\_ | Action type. You must send the value \`print\`, which is associated with creating printing actions for the Point of Sale. | | \`external\_reference\` | \_Body\_. \_String\_ | It is an external reference of the order, assigned at the time of its creation. It must be a unique value for each order and cannot contain PII data. The maximum allowed limit is 64 characters and the allowed ones are: \*\*uppercase and lowercase letters\*\*, \*\*numbers\*\* and \*\*hyphen (-) and underscore (\_) symbols\*\*. | | \`config.point.terminal\_id\` | \_Body\_. \_String\_ | Identifier of the Point terminal that will obtain the order. You must send it as it was returned in the call :TagComponent{tag="API" text="Get terminals" href="/developers/es/reference/in-person-payments/point/terminals/get-terminals/get"}, as in the following example: "NEWLAND\_N950\_\_N950NCB801293324". | | \`config.point.subtype\` | \_Body\_. \_String\_ | Identifier of the print subtype that will be created for the Point terminal. If the action is print, you must choose one of the following values: \-\`custom\`: for custom printing. \-\`image\`: for image printing. | | \`content\` | \_Body\_. \_String\_ | Contains the information to print on the Point terminal. Go to \[Requirements for printing content\](https://www.mercadopago.com.ar/developers/en/docs/mp-point/additional-settings/configure-printings#bookmark\_requirements\_for\_printing\_content) to know what validations to consider depending on the type of printing. | ### Requirements for printing content To implement the different types of printing desired, in addition to indicating which one it is in the \`config.point.subtype\` field, you must take into account the requirements, formats and validations that each of them requires when sending their content through the \`content\` parameter. ::::TabsComponent :::TabComponent{title="Custom printings"} Custom printings use tags that allow adjusting the format and appearance of printed documents, ensuring greater control over the style and structure of the text. When defining the \`subtype\` attribute as \`custom\`, you must include in the \`content\` field a \_string\_ with the desired content, formatted using \*\*at least one of the supported tags\*\*. The content for this attribute is a \*\*minimum of 100 characters and a maximum of 4096\*\*, including the \_tags\_ themselves. Below, check the different available tags and their functions. | Tags | Function | Example | |------|----------|---------| | \`{b}\` | Bold | \`{b}Bold text{/b}\` | | \`{w}\` | Large letter | \`{w}Large letter text{/w}\` | | \`{s}\` | Small letter | \`{s}Small letter text{/s}\` | | \`{br}\` | Line break | \`{br}\` | | \`{left}\` | Align left | \`{left}Left aligned text{/left}\` | | \`{center}\` | Center text | \`{center}Centered text{/center}\` | | \`{qr}\` | Print a QR that represents the sent text | \`{qr}Text{/qr}\` | | \`{pdf417}\` | Print the TED stain | \`{pdf417}Text{/pdf417}\` | Additionally, we provide you with a usage example. \`\`\`json { "type": "print", "config": { "point": { "terminal\_id": "{{device.id}}", "subtype": "custom" } }, "external\_reference": "8a42e06e45d5", "content": "{br}--------------------------------{br}{center}{w} DELIVERY RECEIPT{/w}{br}{br}{s} Order number :12345{/s}{br}{s} Store: Test store{/s}{br}--------------------------------{br}{s}\*\*\*DISPATCH ITEM(S)\*\*\*{/s}{br}{s}SKU / ARTICLE QUANTITY {/s}{br}{s}----------------------------------------------{/s}{br}{s}4065432630504 / SOCCER BALL WUCL LGE EHV240424 1{br}{s}DELIVER: 06/06/2024{/s}{br}{s}ADDRESS: METROPOLITAN {/s}{br}{s}RECEIVES: John{/s}{br}{s}delivery to customer in am schedule{/s}{br}--------------------------------{br}" } \`\`\` ::: :::TabComponent{title="Image printings"} When defining the \`subtype\` attribute as \`image\`, you must include in the \`content\` field an image in \*\*PNG\*\* or \*\*JPEG\*\* format, with \*\*Base64\*\* encoding and a \*\*maximum size of 1MB\*\*. If your images exceed the dimensions of the Point terminal paper roll, an automatic adjustment will be made. ::: :::: If the request is sent correctly, the response will return the \`id\` of the created action along with the \`status: created\`, and the printing will be automatically obtained by the terminal, in which case it will then have a \`status: on\_terminal\`. If the latter does not happen, you can check \[our trobuleshooting documentation\](https://www.mercadopago.com.ar/developers/en/docs/mp-point/resources/troubleshooting). The Terminals API will also allow you to :TagComponent{tag="API" text="get an action" href="/developers/es/reference/in-person-payments/point/impressions/get-action/get"}, including its \`status\` in real time, by sending the reference \`id\` obtained in the response to its creation. Finally, it is also possible to :TagComponent{tag="API" text="cancel an action" href="/developers/es/reference/in-person-payments/point/impressions/cancel-action/post"} using the reference \`id\` obtained in the response to its creation, as long as its status is \`created\`.