{"id":455,"date":"2017-10-12T18:36:10","date_gmt":"2017-10-12T18:36:10","guid":{"rendered":"http:\/\/devportal2.somethingbiggr.com\/?page_id=455"},"modified":"2018-07-18T14:23:03","modified_gmt":"2018-07-18T18:23:03","slug":"webhook","status":"publish","type":"page","link":"https:\/\/developers.instamed.com\/integration\/webhook\/","title":{"rendered":"Webhook"},"content":{"rendered":"<p>Applications can receive real-time notifications whenever a transaction is processed or updated via the InstaMed Webhook interface.<\/p>\n<p>With webhooks enabled, InstaMed sends a simple HTTP POST containing the relevant transaction information (i.e. Patient info, Amount, Transaction Date, TransactionID, etc) to the application URL in the requested format (JSON, XML, NVP).<\/p>\n<h3 id=\"response-and-error-handling\">Response and Error Handling<\/h3>\n<p>Return a HTTP status code 200 only if you successfully store the webhook message.&nbsp;<\/p>\n<p>If the initial webhook post is unsuccessful, InstaMed retries the webhook post every 30 minutes for up to five attempts. InstaMed assigns the transaction a pending posting retry workflow status when a message is being re-attempted. If after five attempts the terminal message is unsuccessful, InstaMed assigns a posting error workflow status.<\/p>\n<h3 id=\"security\">Security<\/h3>\n\n\n<\/h3>\n<p>In order to secure a webhook end point, it is recommended that the following InstaMed IP addresses be whitelisted:<\/p>\n<p>\n\n\n\n<\/p>\n<ul class=\"wp-block-list\">\n\t<li>216.177.67.4<\/li>\n\t<li>216.39.105.164<\/li>\n\t<li>67.20.173.212<\/li>\n\t<li>69.164.118.196<\/li>\n<\/ul>\n<p>Authentication is an optional security method. There are options:\n\n\n<p><\/p>\n<ol>\n<li>Certificate-based (public key) authentication<\/li>\n<li>Basic authentication (username\/password)<\/li>\n<\/ol>\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"notifications-available-via-webhook\">Notifications Available via Webhook\ufeff<\/h3>\n\n\n\n<p>Webhook supports all messages including asynchronous messages and messages generated from the InstaMed platform, including:<\/p>\n\n\n\n<section class=\"wp-block-text-columns alignundefined columns-2\">\n\t<div class=\"wp-block-column\">\n\t\t<p><em>Payments<\/em><\/p>\n\t\t<ul>\n\t\t\t<li>Approved<\/li>\n\t\t\t<li>Declined<\/li>\n\t\t\t<li>Voided<\/li>\n\t\t\t<li>Refunded<\/li>\n\t\t\t<li>Returned<\/li>\n\t\t\t<li>Chargeback<\/li>\n\t\t\t<li>Settlement<\/li>\n\t\t\t<li>Error<\/li>\n\t\t<\/ul>\n\t<\/div>\n\t<div class=\"wp-block-column\">\n\t\t<p><em>Payment Plans<\/em>\n\t\t\t<ul>\n\t\t\t\t<li>Created<\/li>\n\t\t\t\t<li>Updated<\/li>\n\t\t\t<\/ul>\n\t\t<\/p>\n\t<\/div>\n<\/section>\n\n\n\n<p><strong><em>Note<\/em><\/strong><em>:<strong> The TransactionID received via the real-time notification can be used to process a void or simple refund via InstaMed Connect Web Services.<\/strong><\/em><\/p>\n\n\n\n<table class=\"wp-block-table\">\n\t<tbody>\n\t\t<tr style=\"height:45px\">\n\t\t\t<td style=\"width:586.333px;height:45px\"><strong>\ufeffInstaMed Connect Configuration Options\ufeff<\/strong><\/td>\n\t\t\t<td style=\"height:45px\"><br\/><\/td>\n\t\t<\/tr>\n\t\t<tr style=\"height:73px\">\n\t\t\t<td style=\"width:586.333px;height:73px\">MerchantPaymentTransactionNotificationWebhookURL:<\/td>\n\t\t\t<td style=\"width:102.667px;height:73px\"><strong>URL to application<\/strong><\/td>\n\t\t<\/tr>\n\t\t<tr style=\"height:101px\">\n\t\t\t<td style=\"width:586.333px;height:101px\">MerchantPaymentTransactionNotificationSendPaymentNotifications:<\/td>\n\t\t\t<td style=\"width:102.667px;height:101px\"><strong>true or false (default)<\/strong><\/td>\n\t\t<\/tr>\n\t\t<tr style=\"height:101px\">\n\t\t\t<td style=\"width:586.333px;height:101px\">MerchantPaymentTransactionNotificationSendPaymentPlanNotifications:<\/td>\n\t\t\t<td style=\"width:102.667px;height:101px\"><strong>true or false (default)<\/strong><\/td>\n\t\t<\/tr>\n\t\t<tr style=\"height:129px\">\n\t\t\t<td style=\"width:586.333px;height:129px\">MerchantPaymentNotificationInterface:<\/td>\n\t\t\t<td style=\"width:102.667px;height:129px\"><strong>Specify JSON, XML, NVP (default)<\/strong><\/td>\n\t\t<\/tr>\n\t<\/tbody>\n<\/table>\n\n\n\n<p><a href=\"webhook-integration-fields\">Webhook Integration Fields Table<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"webhook-samples-wizard\"><strong>Webhook Samples Wizard\ufeff<\/strong><\/h3>\n\n\n\n<webhook class=\"webhooks wizard\" \n         area=\"\" \n         page=\"\"  \n         maxheight=\"\" \n         action=\"\"\n         format=\"\"\n         method=\"\">\n\t \t<div class=\"alert alert-primary wizard-loading\">\n\t\t  \t<i class=\"fa fa-spinner fa-pulse fa-lg fa-fw\" ><\/i> Loading, please wait\n\t\t<\/div>\n<\/webhook>\n\t\t<div class=\"browser-warning\" style=\"display:none;\">\n\t \t<div class=\"alert alert-danger\">\n\t\t  \t<i class=\"fa fa-exclamation-triangle fa-lg fa-fw\" ><\/i> Unable to load InstaMed webhook wizard. Your browser is not compatible. <Br\/>Please try again using modern browser such as <a href=\"https:\/\/www.google.com\/chrome\/\" rel=\"nofollow noopener\" target=\"_blank\">Google Chrome<\/a> or <a href=\"https:\/\/www.microsoft.com\/en-us\/windows\/microsoft-edge\" rel=\"nofollow noopener\" target=\"_blank\">Microsoft Edge<\/a>.\n\t\t<\/div>\n\t<\/div>\n\n\n<script>\n\tif(window.incompatibleBrowser){\n\t\tjQuery('.browser-warning').show();\t\n\t\tjQuery('.wizard').hide();\t\n\t} \n<\/script>\n\n<!-- \n<wizard application=\"Patient Portal\" usecase=\"NewPayment\" class=\"wizard\">\n\t\t \n<\/wizard> -->\n","protected":false},"excerpt":{"rendered":"<p>Applications can receive real-time notifications whenever a transaction is processed or updated via the InstaMed Webhook interface. With webhooks enabled, InstaMed sends a simple HTTP POST containing the relevant transaction information (i.e. Patient info, Amount, Transaction Date, TransactionID, etc) to the application URL in the requested format (JSON, XML, NVP). Response and Error Handling Return &#8230;<\/p>\n","protected":false},"author":5,"featured_media":0,"parent":19,"menu_order":40,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-455","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/developers.instamed.com\/wp-json\/wp\/v2\/pages\/455","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/developers.instamed.com\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/developers.instamed.com\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/developers.instamed.com\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/developers.instamed.com\/wp-json\/wp\/v2\/comments?post=455"}],"version-history":[{"count":0,"href":"https:\/\/developers.instamed.com\/wp-json\/wp\/v2\/pages\/455\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/developers.instamed.com\/wp-json\/wp\/v2\/pages\/19"}],"wp:attachment":[{"href":"https:\/\/developers.instamed.com\/wp-json\/wp\/v2\/media?parent=455"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}