{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"9efec4c5-4df1-42f3-b01d-79af1445e89b","name":"Lifepack API","description":"# Changelogs\n\n## 2025-08-06\n\n- Add the following properties under the `dosage_instruction` object in the response of `GET /partner/v1/product/{productId}`\n    \n    - `duration`\n        \n    - `duration_unit`\n        \n- Add a new endpoint:  \n    `POST /partner/v2/prescription`This endpoint is similar to `v1`, but with a key difference in the `dosage_instruction` field format inside the `products` array:\n    \n    - In `v1`, `dosage_instruction` is a string (e.g. `\"Take 1 tablet every 4 hours\"`).\n        \n    - In `v2`, `dosage_instruction` is a JSON object with the following structure:\n        \n\n``` json\n{  \"dosage\": 1,  \"dose_unit\": \"tablet\",  \"frequency\": \"three times a day\",  \"timing\": \"after meal\",  \"duration\": 3,  \"duration_unit\": \"days\"}\n\n ```\n\nThis structured format in v2 allows better validation, parsing, and flexibility for downstream processing and rendering, especially for prescription PDFs and clinical decision support.\n\n## 2025-07-21\n\n- Added the following new response parameters to the `GET Product List` endpoint:\n    \n    - `uom` — Unit of measurement for the product.\n        \n    - `price` — Product price per smallest unit (e.g., per tablet, bottle, or strip).\n        \n    - `default_qty` — Default quantity used for purchase.\n        \n    - `route` — Route of administration (e.g., Oral, Transdermal).\n        \n    - `dosage_instruction` — Human-readable dosage instructions.\n        \n- Added a new endpoint: `GET /partner/v2/product`  \n    This new version includes expanded product information with the following response parameters:This endpoint uses `limit` and `page` for pagination and no longer requires the `city_id` parameter used in `v1`.\n    \n    - `id` — Unique identifier for the product.\n        \n    - `name` — Product name.\n        \n    - `description` — Short description or content summary.\n        \n    - `type` — Product type or form (e.g., Tablet, Capsule).\n        \n    - `price` — Product price per smallest unit.\n        \n    - `uom` — Unit of measurement for the product.\n        \n    - `stock_availability` — Indicates if the product is in stock.\n        \n    - `default_qty` — Default quantity used for purchase.\n        \n    - `route` — Route of administration (e.g., Oral, Transdermal).\n        \n    - `dosage_instruction` — Human-readable dosage instruction.\n        \n\n## 2021-11-11\n\n- Add new `price` response parameter in [GET Product List](https://api-docs.lifepack.id/#ce261a0f-27ae-45dc-a6b2-a57f060a0343) endpoint.\n    \n\n## 2021-05-06\n\n- Add new subscription status (`order_expired`) that will be triggered if user doesn't take any action with the unpaid order with incomplete address within 1 hour.\n    \n- Add new `expired_at` response parameter in [GET Subscription History](https://api-docs.lifepack.id/#0bb084e6-2e38-4c52-86c9-1a3f28e65553) endpoint.\n    \n- Add new `expired_at` response parameter in [GET Subscription Detail](https://api-docs.lifepack.id/#16595cf9-dfe3-4b83-a319-5e61d12464f9) endpoint.\n    \n\n## 2021-04-01\n\n- Add new way to submit prescription data, using free text (`medication` parameter) in [POST Submit Prescription Data](https://api-docs.lifepack.id/#01382ce2-fb36-45cd-9077-a31495d47413) endpoint.\n    \n\n## 2021-02-22\n\n- **\\[Breaking Changes\\]** Set parameter `city_id` to mandatory on request body parameter of [POST Submit Prescription Data](https://api-docs.lifepack.id/#01382ce2-fb36-45cd-9077-a31495d47413) endpoint.\n    \n- **\\[Breaking Changes\\]** Add required parameter `city_id` on request query parameter of [GET Product List](https://api-docs.lifepack.id/#ce261a0f-27ae-45dc-a6b2-a57f060a0343) endpoint.\n    \n- Updated the [GET City Coverage](https://api-docs.lifepack.id/#3dc6feaa-ac70-4738-ad87-2b6aa008229f) endpoint response values. We now support broader selection of cities to provide the best coverage and price offered possible to our partners.\n    \n\n## 2021-01-14\n\n- **\\[Breaking Changes\\]** Add mandatory `dosage_per_unit` on product entity if you are using submit by digital prescription method on [POST Submit Prescription Data](https://api-docs.lifepack.id/#01382ce2-fb36-45cd-9077-a31495d47413) endpoint.\n    \n- Added optional `age_unit` in patient entity on [POST Submit Prescription Data](https://api-docs.lifepack.id/#01382ce2-fb36-45cd-9077-a31495d47413) endpoint. Default value is `years`.\n    \n- Added optional \\[`age`, `age_unit`, `weight`\\] in patient entity of request parameters on [POST Register Patient](https://api-docs.lifepack.id/#88f25b11-49ad-4272-a784-92893453b8ae) endpoint.\n    \n\n## 2020-12-21\n\n- Change `diagnose` on patient entity max character length from 100 characters to 255 characters on [POST Submit Prescription Data](https://api-docs.lifepack.id/#01382ce2-fb36-45cd-9077-a31495d47413) endpoint.\n    \n\n## 2020-12-16\n\n- **\\[Breaking Changes\\]** Partner that sent \"address\" entity empty on [POST Submit Prescription Data](https://api-docs.lifepack.id/#01382ce2-fb36-45cd-9077-a31495d47413) endpoint should notice that the `address` entity on [GET Subscription Detail](https://api-docs.lifepack.id/#16595cf9-dfe3-4b83-a319-5e61d12464f9) endpoint will have value of empty object (`{}`) until user has set the address in the link given by SMS/notification at `pending_address` status. This happens to avoid delivery price showing up before user has set the address.\n    \n- Adjust explanation on `payment` entity, add \\[`method`, `logo`, `account_number`\\] and change `expired_at` documentation on [GET Subscription Detail](https://api-docs.lifepack.id/#16595cf9-dfe3-4b83-a319-5e61d12464f9) endpoint.\n    \n\n# Overview\n\n## Lifepack Open API Description\n\nLifepackPartner is a project used to describe and document RESTful APIs.\n\n## Partner Account Types\n\nCurrently, there is two different partner account types available for partners to apply:\n\n1. Standard Partner Account - Partner who's applying this kind of account should have their customer coordinate address data to send to us while sending [Submit Prescription Data](https://api-docs.lifepack.id/?version=latest#01382ce2-fb36-45cd-9077-a31495d47413) requests and also they should have their own payment system.\n    \n2. Payment on Us Partner Account - Partner who applying this kind of account are the ones that still don't have their own payment system. Sending patient address coordinates while sending [Submit Prescription Data](https://api-docs.lifepack.id/?version=latest#01382ce2-fb36-45cd-9077-a31495d47413) requests are also optional.\n    \n\n## Bussiness Flow\n\n### Subscription Creation Flow\n\nThe process begins on the Partner side. The partner starts the flow and checks whether the user has a prescription photo.\n\n- **If the user has a prescription photo**, the partner proceeds to collect the prescription photo and sends it to Lifepack.\n    \n- Lifepack then performs the **Upload Prescription Photo** step, which returns a **Prescription Photo ID** to the partner.\n    \n\nNext, regardless of whether the prescription photo was available initially, the partner prepares the **Prescription Data**. This data may include medication details, dosage instructions, and other relevant information.\n\nThe partner then submits the prescription data to Lifepack through the **Submit Prescription Data** process. Lifepack processes the submission and returns a **Subscription ID**.\n\nFinally, the flow ends once the subscription ID is received, indicating that the prescription submission and subscription creation are successfully completed.\n\n<img src=\"https://content.pstmn.io/289e8938-41d6-4f9e-b57d-19956ee54270/U3Vic2NyaXB0aW9uQnVzaW5lc3NGbG93VjEuMy5wbmc=\" alt=\"Subscription%20Flow\">\n\n### Payment Flow\n\nCurrently, there are two payment flow available to use on our system. The default payment flow and payment flow with payment on us option. If your system or existing data doesn't have user's address coordinate picker and payment system, you can apply for payment on us option to be enabled by contacting our business team.\n\n#### Default Payment Flow\n\nThe default payment flow starts after the prescription has reviewed and approved by our pharmacists. You can directly hit our [Change Payment Status to Paid](https://api-docs.lifepack.id/?version=latest#60c7c2e6-5e27-47d9-9713-7b898a1f6f16) endpoint after your customer's payment is already paid and verified in your system.\n\n<img src=\"https://content.pstmn.io/4eb9c8a2-1f2a-48ed-bd9a-bcae17a49c27/UGF5bWVudEJ1c2luZXNzRmxvd1YxLjEucG5n\" alt=\"Payment%20Flow\">\n\n#### Payment on Us Flow\n\nThe payment on us flow also starts after the prescription has reviewed and approved by our pharmacists. But, the entire process on address picking will happen in our system. You can just listen to webhook callback from us for the subscription status updates.\n\n<img src=\"https://content.pstmn.io/0fbd880f-4635-4a8c-bbde-79f8c7a14e8d/UGF5bWVudE9uVXNCdXNpbmVzc0Zsb3dWMS5wbmc=\" alt=\"Payment%20on%20Us\">\n\n## UX Guideline\n\n### Registration Flow\n\n<img src=\"https://content.pstmn.io/2101d753-ae3d-41ee-9964-fdd049ee59ab/UmVnaXN0cmF0aW9uLmpwZw==\" alt=\"Registration%20Flow\">\n\n### Create Digital Prescription Flow\n\n<img src=\"https://content.pstmn.io/851b1d71-6906-4a83-a662-b8357ed0f4e6/Q3JlYXRlRGlnaXRhbFByZXNjcmlwdGlvbi0xLmpwZw==\" alt=\"Create%20Digital%20Prescription%20Flow%201\n&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;\">\n\n<img src=\"https://content.pstmn.io/4aec0efa-3c6e-4b57-ac0d-297033efc63f/Q3JlYXRlRGlnaXRhbFByZXNjcmlwdGlvbi0yLmpwZw==\" alt=\"Create%20Digital%20Prescription%20Flow%202\n&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;\">\n\n<img src=\"https://content.pstmn.io/132ed779-4697-42ea-8433-cc23254befc3/Q3JlYXRlRGlnaXRhbFByZXNjcmlwdGlvbi0zLmpwZw==\" alt=\"Create%20Digital%20Prescription%20Flow%203\n&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;\">\n\n### Create Photo Prescription Flow\n\n<img src=\"https://content.pstmn.io/8f16f833-0f31-43a5-ab00-185dcdddcc9a/VXBsb2FkUHJlc2NyaXB0aW9uLTEuanBn\" alt=\"Create%20Photo%20Prescription%20Flow%201\n&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;\">\n\n<img src=\"https://content.pstmn.io/ba7ec2c8-044e-4303-b96c-16281c547d73/VXBsb2FkUHJlc2NyaXB0aW9uLTIuanBn\" alt=\"Create%20Photo%20Prescription%20Flow%202\">\n\n# Features\n\n## Easy to Integrate API\n\n- Our RESTful API’s enable our partners to integrate to our solution seamlessly;\n    \n- Lifepack API support: Prescription, Subscription, Payment, Patient, Product.\n    \n\n## Dashboard\n\n- Lifepack provides a portal for our partners to see all prescription history as well as analytics of their shipment and consumption activities;\n    \n\n# Setting Up\n\nOnce a partner has registered, it will have an access to our sandbox environment. Lifepack partner dashboard will also be accessible.\n\n## Getting Notification\n\nLIfepack allows partners to receive realtime notifications about Lifepack related information, by configuring a endpoint url on the Lifepack Partner Dashboard.\n\nWe are sending notifications to Webhook URL. This endpoint will only be triggered if there are status changes to existing subscription. Please refer to [subscription status reference section](https://api-docs.lifepack.id/?version=latest#subscription-status) for which statuses are sent in the notification.\n\nOnce configured, Lifepack will send a HTTP POST payload to the url, containing detail about specific event which can be seen in the notification payload section.\n\n**Configuring the Endpoint URL**\n\n- To setup an Endpoint URL on Lifepack, head over to the **SETTINGS** tab on the sidebar, and edit the values on **WEBHOOK URL**.\n    \n- Save the notification URL using the **Submit** button. The notification URL can be modified anytime from the settings page.\n    \n\n## Notification Payload\n\n### Lifepack Webhook Payload Examples (Full)\n\n#### Payload Prescription Approve\n\n``` json\n{\n  \"subscription_id\": 10678,\n  \"status\": \"prescription_approved\",\n  \"reject_reason\": null,\n  \"reject_notes\": null,\n  \"patient\": {\n    \"id\": 783,\n    \"name\": \"MUHAMMAD AL HAFIZI\",\n    \"phone_number\": \"+628131133898989\",\n    \"address\": {\n      \"default\": false\n    }\n  },\n  \"total_payment\": null,\n  \"products\": [\n    {\n      \"id\": 1691,\n      \"name\": \"NEUROBAT TABLET\",\n      \"qty\": 1,\n      \"type\": \"Tablet\",\n      \"price\": 46692,\n      \"currency\": \"IDR\",\n      \"uom\": \"Strip\",\n      \"consumption_day\": 7,\n      \"total_qty\": 1,\n      \"doctor_notes\": \"1\",\n      \"dosage_instruction\": {\n        \"dosage\": 1,\n        \"dose_unit\": \"tablet\",\n        \"frequency\": \"2x sehari\",\n        \"timing\": \"Sebelum makan\",\n        \"duration\": 7,\n        \"duration_unit\": \"Hari\"\n      },\n      \"direction\": \"1x1 tablet\"\n    }\n  ],\n  \"timestamp\": \"2025-08-21 13:33:18\",\n  \"payment_link\": null\n}\n\n ```\n\n#### Payload Prescription Adjusted\n\n``` json\n{\n  \"subscription_id\": 10678,\n  \"status\": \"prescription_adjusted\",\n  \"reject_reason\": null,\n  \"reject_notes\": null,\n  \"patient\": {\n    \"id\": 783,\n    \"name\": \"MUHAMMAD AL HAFIZI\",\n    \"phone_number\": \"+628131133898989\",\n    \"address\": {\n      \"default\": false\n    }\n  },\n  \"total_payment\": 46692,\n  \"products\": [\n    {\n      \"id\": 1691,\n      \"name\": \"NEUROBAT TABLET\",\n      \"qty\": 1,\n      \"type\": \"Tablet\",\n      \"price\": 46692,\n      \"currency\": \"IDR\",\n      \"uom\": \"Strip\",\n      \"consumption_day\": 7,\n      \"total_qty\": 1,\n      \"doctor_notes\": \"1\",\n      \"dosage_instruction\": {\n        \"dosage\": 1,\n        \"dose_unit\": \"tablet\",\n        \"frequency\": \"2x sehari\",\n        \"timing\": \"Sebelum makan\",\n        \"duration\": 7,\n        \"duration_unit\": \"Hari\"\n      },\n      \"direction\": \"1x1 tablet\"\n    }\n  ],\n  \"timestamp\": \"2025-08-21 13:33:18\",\n  \"payment_link\": null\n}\n\n ```\n\n#### Payload Pending Address\n\n``` json\n{\n  \"subscription_id\": 10678,\n  \"status\": \"pending_address\",\n  \"reject_reason\": null,\n  \"reject_notes\": null,\n  \"patient\": {\n    \"id\": 783,\n    \"name\": \"MUHAMMAD AL HAFIZI\",\n    \"phone_number\": \"+628131133898989\",\n    \"address\": {\n      \"default\": false\n    }\n  },\n  \"total_payment\": 51828,\n  \"products\": [\n    {\n      \"id\": 1691,\n      \"name\": \"NEUROBAT TABLET\",\n      \"qty\": 1,\n      \"type\": \"Tablet\",\n      \"price\": 46692,\n      \"currency\": \"IDR\",\n      \"uom\": \"Strip\",\n      \"consumption_day\": 7,\n      \"total_qty\": 1,\n      \"doctor_notes\": \"1\",\n      \"dosage_instruction\": {\n        \"dosage\": 1,\n        \"dose_unit\": \"tablet\",\n        \"frequency\": \"2x sehari\",\n        \"timing\": \"Sebelum makan\",\n        \"duration\": 7,\n        \"duration_unit\": \"Hari\"\n      },\n      \"direction\": \"1x1 tablet\"\n    }\n  ],\n  \"timestamp\": \"2025-08-21 13:33:22\",\n  \"payment_link\": \"https://sandbox-link.lifepack.id/tFg5\"\n}\n\n ```\n\n#### Payload Payment Order\n\n``` json\n{\n  \"subscription_id\": 10678,\n  \"status\": \"payment_order\",\n  \"reject_reason\": null,\n  \"reject_notes\": null,\n  \"patient\": {\n    \"id\": 783,\n    \"name\": \"MUHAMMAD AL HAFIZI\",\n    \"phone_number\": \"+628131133898989\",\n    \"address\": {\n      \"id\": 470,\n      \"default\": false,\n      \"latitude\": -6.175328,\n      \"longitude\": 106.8271517,\n      \"first_line\": \"Jalan Tugu Monas\",\n      \"second_line\": \"Jalan Tugu Monas, Jl. Tugu Monas No.1, Gambir, Kecamatan Gambir, Kota Jakarta Pusat, Daerah Khusus Ibukota Jakarta 10110, Indonesia\",\n      \"postal_code\": \"10110\",\n      \"note\": \"monas\",\n      \"street_name\": \"Jalan Tugu Monas 1\",\n      \"province\": \"Daerah Khusus Ibukota Jakarta\",\n      \"city\": \"Kota Jakarta Pusat\",\n      \"district\": \"Kecamatan Gambir\",\n      \"sub_district\": \"Gambir\",\n      \"label\": \"monas\"\n    }\n  },\n  \"total_payment\": 79578,\n  \"products\": [\n    {\n      \"id\": 1691,\n      \"name\": \"NEUROBAT TABLET\",\n      \"qty\": 1,\n      \"type\": \"Tablet\",\n      \"price\": 46692,\n      \"currency\": \"IDR\",\n      \"uom\": \"Strip\",\n      \"consumption_day\": 7,\n      \"total_qty\": 1,\n      \"doctor_notes\": \"1\",\n      \"dosage_instruction\": {\n        \"dosage\": 1,\n        \"dose_unit\": \"tablet\",\n        \"frequency\": \"2x sehari\",\n        \"timing\": \"Sebelum makan\",\n        \"duration\": 7,\n        \"duration_unit\": \"Hari\"\n      },\n      \"direction\": \"1x1 tablet\"\n    }\n  ],\n  \"timestamp\": \"2025-08-21 13:34:14\",\n  \"payment_link\": \"https://sandbox-link.lifepack.id/tFg5\"\n}\n\n ```\n\n#### Payload waiting for payment\n\n``` json\n{\n  \"subscription_id\": 10678,\n  \"status\": \"waiting_for_payment\",\n  \"reject_reason\": null,\n  \"reject_notes\": null,\n  \"patient\": {\n    \"id\": 783,\n    \"name\": \"MUHAMMAD AL HAFIZI\",\n    \"phone_number\": \"+628131133898989\",\n    \"address\": {\n      \"id\": 470,\n      \"default\": false,\n      \"latitude\": -6.175328,\n      \"longitude\": 106.8271517,\n      \"first_line\": \"Jalan Tugu Monas\",\n      \"second_line\": \"Jalan Tugu Monas, Jl. Tugu Monas No.1, Gambir, Kecamatan Gambir, Kota Jakarta Pusat, Daerah Khusus Ibukota Jakarta 10110, Indonesia\",\n      \"postal_code\": \"10110\",\n      \"note\": \"monas\",\n      \"street_name\": \"Jalan Tugu Monas 1\",\n      \"province\": \"Daerah Khusus Ibukota Jakarta\",\n      \"city\": \"Kota Jakarta Pusat\",\n      \"district\": \"Kecamatan Gambir\",\n      \"sub_district\": \"Gambir\",\n      \"label\": \"monas\"\n    }\n  },\n  \"total_payment\": 71692,\n  \"products\": [\n    {\n      \"id\": 1691,\n      \"name\": \"NEUROBAT TABLET\",\n      \"qty\": 1,\n      \"type\": \"Tablet\",\n      \"price\": 46692,\n      \"currency\": \"IDR\",\n      \"uom\": \"Strip\",\n      \"consumption_day\": 7,\n      \"total_qty\": 1,\n      \"doctor_notes\": \"1\",\n      \"dosage_instruction\": {\n        \"dosage\": 1,\n        \"dose_unit\": \"tablet\",\n        \"frequency\": \"2x sehari\",\n        \"timing\": \"Sebelum makan\",\n        \"duration\": 7,\n        \"duration_unit\": \"Hari\"\n      },\n      \"direction\": \"1x1 tablet\"\n    }\n  ],\n  \"timestamp\": \"2025-08-21 13:34:24\",\n  \"payment_link\": \"https://sandbox-link.lifepack.id/tFg5\"\n}\n\n ```\n\n#### Payload Payment Successful\n\n``` json\n{\n  \"subscription_id\": 10678,\n  \"status\": \"payment_successful\",\n  \"reject_reason\": null,\n  \"reject_notes\": null,\n  \"patient\": {\n    \"id\": 783,\n    \"name\": \"MUHAMMAD AL HAFIZI\",\n    \"phone_number\": \"+628131133898989\",\n    \"address\": {\n      \"id\": 470,\n      \"default\": false,\n      \"latitude\": -6.175328,\n      \"longitude\": 106.8271517,\n      \"first_line\": \"Jalan Tugu Monas\",\n      \"second_line\": \"Jalan Tugu Monas, Jl. Tugu Monas No.1, Gambir, Kecamatan Gambir, Kota Jakarta Pusat, Daerah Khusus Ibukota Jakarta 10110, Indonesia\",\n      \"postal_code\": \"10110\",\n      \"note\": \"monas\",\n      \"street_name\": \"Jalan Tugu Monas 1\",\n      \"province\": \"Daerah Khusus Ibukota Jakarta\",\n      \"city\": \"Kota Jakarta Pusat\",\n      \"district\": \"Kecamatan Gambir\",\n      \"sub_district\": \"Gambir\",\n      \"label\": \"monas\"\n    }\n  },\n  \"total_payment\": 71692,\n  \"products\": [\n    {\n      \"id\": 1691,\n      \"name\": \"NEUROBAT TABLET\",\n      \"qty\": 1,\n      \"type\": \"Tablet\",\n      \"price\": 46692,\n      \"currency\": \"IDR\",\n      \"uom\": \"Strip\",\n      \"consumption_day\": 7,\n      \"total_qty\": 1,\n      \"doctor_notes\": \"1\",\n      \"dosage_instruction\": {\n        \"dosage\": 1,\n        \"dose_unit\": \"tablet\",\n        \"frequency\": \"2x sehari\",\n        \"timing\": \"Sebelum makan\",\n        \"duration\": 7,\n        \"duration_unit\": \"Hari\"\n      },\n      \"direction\": \"1x1 tablet\"\n    }\n  ],\n  \"timestamp\": \"2025-08-21 13:34:38\",\n  \"payment_link\": \"https://sandbox-link.lifepack.id/tFg5\"\n}\n\n ```\n\n#### Payload Order Processed\n\n``` json\n{\n  \"subscription_id\": 10678,\n  \"status\": \"order_processed\",\n  \"reject_reason\": null,\n  \"reject_notes\": null,\n  \"patient\": {\n    \"id\": 783,\n    \"name\": \"MUHAMMAD AL HAFIZI\",\n    \"phone_number\": \"+628131133898989\",\n    \"address\": {\n      \"id\": 470,\n      \"default\": false,\n      \"latitude\": -6.175328,\n      \"longitude\": 106.8271517,\n      \"first_line\": \"Jalan Tugu Monas\",\n      \"second_line\": \"Jalan Tugu Monas, Jl. Tugu Monas No.1, Gambir, Kecamatan Gambir, Kota Jakarta Pusat, Daerah Khusus Ibukota Jakarta 10110, Indonesia\",\n      \"postal_code\": \"10110\",\n      \"note\": \"monas\",\n      \"street_name\": \"Jalan Tugu Monas 1\",\n      \"province\": \"Daerah Khusus Ibukota Jakarta\",\n      \"city\": \"Kota Jakarta Pusat\",\n      \"district\": \"Kecamatan Gambir\",\n      \"sub_district\": \"Gambir\",\n      \"label\": \"monas\"\n    }\n  },\n  \"total_payment\": 71692,\n  \"products\": [\n    {\n      \"id\": 1691,\n      \"name\": \"NEUROBAT TABLET\",\n      \"qty\": 1,\n      \"type\": \"Tablet\",\n      \"price\": 46692,\n      \"currency\": \"IDR\",\n      \"uom\": \"Strip\",\n      \"consumption_day\": 7,\n      \"total_qty\": 1,\n      \"doctor_notes\": \"1\",\n      \"dosage_instruction\": {\n        \"dosage\": 1,\n        \"dose_unit\": \"tablet\",\n        \"frequency\": \"2x sehari\",\n        \"timing\": \"Sebelum makan\",\n        \"duration\": 7,\n        \"duration_unit\": \"Hari\"\n      },\n      \"direction\": \"1x1 tablet\"\n    }\n  ],\n  \"timestamp\": \"2025-08-21 13:37:10\",\n  \"payment_link\": \"https://sandbox-link.lifepack.id/tFg5\"\n}\n\n ```\n\n#### Payload Waiting for Pickup\n\n``` json\n{\n  \"subscription_id\": 10678,\n  \"status\": \"waiting_for_pickup\",\n  \"reject_reason\": null,\n  \"reject_notes\": null,\n  \"patient\": {\n    \"id\": 783,\n    \"name\": \"MUHAMMAD AL HAFIZI\",\n    \"phone_number\": \"+628131133898989\",\n    \"address\": {\n      \"id\": 470,\n      \"default\": false,\n      \"latitude\": -6.175328,\n      \"longitude\": 106.8271517,\n      \"first_line\": \"Jalan Tugu Monas\",\n      \"second_line\": \"Jalan Tugu Monas, Jl. Tugu Monas No.1, Gambir, Kecamatan Gambir, Kota Jakarta Pusat, Daerah Khusus Ibukota Jakarta 10110, Indonesia\",\n      \"postal_code\": \"10110\",\n      \"note\": \"monas\",\n      \"street_name\": \"Jalan Tugu Monas 1\",\n      \"province\": \"Daerah Khusus Ibukota Jakarta\",\n      \"city\": \"Kota Jakarta Pusat\",\n      \"district\": \"Kecamatan Gambir\",\n      \"sub_district\": \"Gambir\",\n      \"label\": \"monas\"\n    }\n  },\n  \"total_payment\": 71692,\n  \"products\": [\n    {\n      \"id\": 1691,\n      \"name\": \"NEUROBAT TABLET\",\n      \"qty\": 1,\n      \"type\": \"Tablet\",\n      \"price\": 46692,\n      \"currency\": \"IDR\",\n      \"uom\": \"Strip\",\n      \"consumption_day\": 7,\n      \"total_qty\": 1,\n      \"doctor_notes\": \"1\",\n      \"dosage_instruction\": {\n        \"dosage\": 1,\n        \"dose_unit\": \"tablet\",\n        \"frequency\": \"2x sehari\",\n        \"timing\": \"Sebelum makan\",\n        \"duration\": 7,\n        \"duration_unit\": \"Hari\"\n      },\n      \"direction\": \"1x1 tablet\"\n    }\n  ],\n  \"timestamp\": \"2025-08-21 13:37:20\",\n  \"payment_link\": \"https://sandbox-link.lifepack.id/tFg5\"\n}\n\n ```\n\n#### Payload Picked Up\n\n``` json\n{\n  \"subscription_id\": 10678,\n  \"status\": \"picked_up\",\n  \"reject_reason\": null,\n  \"reject_notes\": null,\n  \"patient\": {\n    \"id\": 783,\n    \"name\": \"MUHAMMAD AL HAFIZI\",\n    \"phone_number\": \"+628131133898989\",\n    \"address\": {\n      \"id\": 470,\n      \"default\": false,\n      \"latitude\": -6.175328,\n      \"longitude\": 106.8271517,\n      \"first_line\": \"Jalan Tugu Monas\",\n      \"second_line\": \"Jalan Tugu Monas, Jl. Tugu Monas No.1, Gambir, Kecamatan Gambir, Kota Jakarta Pusat, Daerah Khusus Ibukota Jakarta 10110, Indonesia\",\n      \"postal_code\": \"10110\",\n      \"note\": \"monas\",\n      \"street_name\": \"Jalan Tugu Monas 1\",\n      \"province\": \"Daerah Khusus Ibukota Jakarta\",\n      \"city\": \"Kota Jakarta Pusat\",\n      \"district\": \"Kecamatan Gambir\",\n      \"sub_district\": \"Gambir\",\n      \"label\": \"monas\"\n    }\n  },\n  \"total_payment\": 71692,\n  \"products\": [\n    {\n      \"id\": 1691,\n      \"name\": \"NEUROBAT TABLET\",\n      \"qty\": 1,\n      \"type\": \"Tablet\",\n      \"price\": 46692,\n      \"currency\": \"IDR\",\n      \"uom\": \"Strip\",\n      \"consumption_day\": 7,\n      \"total_qty\": 1,\n      \"doctor_notes\": \"1\",\n      \"dosage_instruction\": {\n        \"dosage\": 1,\n        \"dose_unit\": \"tablet\",\n        \"frequency\": \"2x sehari\",\n        \"timing\": \"Sebelum makan\",\n        \"duration\": 7,\n        \"duration_unit\": \"Hari\"\n      },\n      \"direction\": \"1x1 tablet\"\n    }\n  ],\n  \"timestamp\": \"2025-08-21 13:38:29\",\n  \"payment_link\": \"https://sandbox-link.lifepack.id/tFg5\"\n}\n\n ```\n\n#### Payload on Delivery\n\n``` json\n{\n  \"subscription_id\": 10678,\n  \"status\": \"on_delivery\",\n  \"reject_reason\": null,\n  \"reject_notes\": null,\n  \"patient\": {\n    \"id\": 783,\n    \"name\": \"MUHAMMAD AL HAFIZI\",\n    \"phone_number\": \"+628131133898989\",\n    \"address\": {\n      \"id\": 470,\n      \"default\": false,\n      \"latitude\": -6.175328,\n      \"longitude\": 106.8271517,\n      \"first_line\": \"Jalan Tugu Monas\",\n      \"second_line\": \"Jalan Tugu Monas, Jl. Tugu Monas No.1, Gambir, Kecamatan Gambir, Kota Jakarta Pusat, Daerah Khusus Ibukota Jakarta 10110, Indonesia\",\n      \"postal_code\": \"10110\",\n      \"note\": \"monas\",\n      \"street_name\": \"Jalan Tugu Monas 1\",\n      \"province\": \"Daerah Khusus Ibukota Jakarta\",\n      \"city\": \"Kota Jakarta Pusat\",\n      \"district\": \"Kecamatan Gambir\",\n      \"sub_district\": \"Gambir\",\n      \"label\": \"monas\"\n    }\n  },\n  \"total_payment\": 71692,\n  \"products\": [\n    {\n      \"id\": 1691,\n      \"name\": \"NEUROBAT TABLET\",\n      \"qty\": 1,\n      \"type\": \"Tablet\",\n      \"price\": 46692,\n      \"currency\": \"IDR\",\n      \"uom\": \"Strip\",\n      \"consumption_day\": 7,\n      \"total_qty\": 1,\n      \"doctor_notes\": \"1\",\n      \"dosage_instruction\": {\n        \"dosage\": 1,\n        \"dose_unit\": \"tablet\",\n        \"frequency\": \"2x sehari\",\n        \"timing\": \"Sebelum makan\",\n        \"duration\": 7,\n        \"duration_unit\": \"Hari\"\n      },\n      \"direction\": \"1x1 tablet\"\n    }\n  ],\n  \"timestamp\": \"2025-08-21 13:38:37\",\n  \"payment_link\": \"https://sandbox-link.lifepack.id/tFg5\"\n}\n\n ```\n\n#### Payload Delivered\n\n``` json\n{\n  \"subscription_id\": 10678,\n  \"status\": \"delivered\",\n  \"reject_reason\": null,\n  \"reject_notes\": null,\n  \"patient\": {\n    \"id\": 783,\n    \"name\": \"MUHAMMAD AL HAFIZI\",\n    \"phone_number\": \"+628131133898989\",\n    \"address\": {\n      \"id\": 470,\n      \"default\": false,\n      \"latitude\": -6.175328,\n      \"longitude\": 106.8271517,\n      \"first_line\": \"Jalan Tugu Monas\",\n      \"second_line\": \"Jalan Tugu Monas, Jl. Tugu Monas No.1, Gambir, Kecamatan Gambir, Kota Jakarta Pusat, Daerah Khusus Ibukota Jakarta 10110, Indonesia\",\n      \"postal_code\": \"10110\",\n      \"note\": \"monas\",\n      \"street_name\": \"Jalan Tugu Monas 1\",\n      \"province\": \"Daerah Khusus Ibukota Jakarta\",\n      \"city\": \"Kota Jakarta Pusat\",\n      \"district\": \"Kecamatan Gambir\",\n      \"sub_district\": \"Gambir\",\n      \"label\": \"monas\"\n    }\n  },\n  \"total_payment\": 71692,\n  \"products\": [\n    {\n      \"id\": 1691,\n      \"name\": \"NEUROBAT TABLET\",\n      \"qty\": 1,\n      \"type\": \"Tablet\",\n      \"price\": 46692,\n      \"currency\": \"IDR\",\n      \"uom\": \"Strip\",\n      \"consumption_day\": 7,\n      \"total_qty\": 1,\n      \"doctor_notes\": \"1\",\n      \"dosage_instruction\": {\n        \"dosage\": 1,\n        \"dose_unit\": \"tablet\",\n        \"frequency\": \"2x sehari\",\n        \"timing\": \"Sebelum makan\",\n        \"duration\": 7,\n        \"duration_unit\": \"Hari\"\n      },\n      \"direction\": \"1x1 tablet\"\n    }\n  ],\n  \"timestamp\": \"2025-08-21 13:45:59\",\n  \"payment_link\": \"https://sandbox-link.lifepack.id/tFg5\"\n}\n\n ```\n\n### Payload Description\n\n| Parameter | Description |\n| --- | --- |\n| subscription_id | Subscription ID of the notification |\n| patient | `object` Please refer to [patient entity](https://api-docs.lifepack.id/#patient-entity) |\n| status | Refer to [subscription status reference section](https://api-docs.lifepack.id/?version=latest#subscription-status) for possible values |\n| total_payment | Amount of the total payment for current subscription |\n| timestamp | `string` Last update time |\n|  | Date format `YYYY-MM-DD HH:mm:ss` |\n\n### Product Entity\n\n| id | Product ID |\n| --- | --- |\n| name | Product name |\n| qty | Quantity taken per day |\n| consumption_day | Total days user should taking medicine |\n| total_qty | Total quantity of product given to user |\n\n## Error Code and Message\n\n### Description Of Usual Server Responses (HTTP Codes)\n\n- `200 OK` - the request was successful (some API calls may return 201 instead).\n    \n- `201 Created` - the request was successful and a resource was created.\n    \n- `202 Accepted` - the request was accepted and enqueue for processing later.\n    \n- `204 No Content` - the request was successful but there is no representation to return (i.e. the response is empty).\n    \n- `400 Bad Request` - the request could not be understood or was missing required parameters.\n    \n- `401 Unauthorized` - authentication failed.\n    \n- `403 Forbidden` - access denied.\n    \n- `402 Payment Required` - payment is required.\n    \n- `404 Not Found` - resource was not found.\n    \n- `410 Gone` - the resource has been expired.\n    \n- `422 Unprocessable Entity` - i.e. validation errors.\n    \n- `500 Internal Server Error` - Bad bad bad.\n    \n- `503 Service Unavailable` - service is temporary unavailable (e.g. scheduled Platform Maintenance). Try again later.\n    \n\n### Error Structure\n\nAside from the `4XX` and `5XX` error HTTP Headers, we have an unified error structure:\n\n```\n{\n  \"error_code\": \"INTERNAL_SERVER_ERROR\",\n  \"message\": \"Internal Server Error\"\n}\n\n ```\n\nThis means that, if you get an `4XX` or `5XX` errors, you can utilize your system to log or display the error message to the user. Possible error codes will be explained in each endpoints.\n\n# Reference\n\n## Subscription Status\n\n| Status | Description | Status appears on subscription detail? | Will receive notification? |\n| --- | --- | --- | --- |\n| in_review | Prescription is under review (products and total payment still not exists) | ✅ | ❌ |\n| prescription_approved | Prescription approved by pharmacist | ✅ | ✅ |\n| prescription_adjusted | Prescription is adjusted, partner should update prescription detail information | ❌ | ✅ |\n| order_cancelled | Prescription cancelled by pharmacist | ✅ | ✅ |\n| order_expired | Order is not continued within the time specified at `expired_at` | ✅ | ✅ |\n| prescription_rejected | Prescription is rejected by admin | ✅ | ✅ |\n| pending_address | User need to update address | ✅ | ✅ |\n| payment_order | Prescription is approved by admin and ready to be charged | ✅ | ✅ |\n| waiting_for_payment | User already selected payment method (only for payment on us partner type) | ✅ | ✅ |\n| payment_successful | Order has successfully paid by user | ✅ | ✅ |\n| payment_expired | Payment has expired (only for payment on us partner type) | ✅ | ✅ |\n| payment_failed | Payment has failed (only for payment on us partner type) | ✅ | ✅ |\n| order_processed | Pharmacist is preparing the order | ✅ | ✅ |\n| waiting_for_pickup | Package is ready to ship, waiting the courier to pick up | ✅ | ✅ |\n| picked_up | Package is picked up by courier | ✅ | ✅ |\n| on_delivery | Package is on delivery to customer address | ✅ | ✅ |\n| delivered | Package has already delivered to customer address | ✅ | ✅ |\n| delivery_failed | Package delivery has failed | ✅ | ✅ |\n| active | User click confirm button in lifepack app/automatically after 24 h delivered | ✅ | ✅ |\n| inactive | Medication schedule ended | ✅ | ✅ |\n\n# Authorization\n\nFor the authorization headers for authenticating the requests, please refer to our [Authorization](https://api-docs.lifepack.id/?version=latest#authorization-header) section.","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"11017458","team":920665,"collectionId":"9efec4c5-4df1-42f3-b01d-79af1445e89b","publishedId":"Szme4yQT","public":true,"publicUrl":"https://api-docs.lifepack.id","privateUrl":"https://go.postman.co/documentation/11017458-9efec4c5-4df1-42f3-b01d-79af1445e89b","customColor":{"top-bar":"162D64","right-sidebar":"303030","highlight":"162D64"},"documentationLayout":"classic-double-column","customisation":null,"version":"8.10.1","publishDate":"2020-06-10T04:28:20.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{},"logos":{}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/bb3dd66974d25e3fed90c95ff5898a6ab7800f1d39ec69da40ad850f8df3401f","favicon":"https://lifepack.id/favicon.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://api-docs.lifepack.id/view/metadata/Szme4yQT"}