{"info":{"_postman_id":"761f7378-b500-44c8-839b-304826336f93","name":"Shuttle - Legacy","description":"<html><head></head><body><p>This document contains documentation for LEGACY version of the APIs.</p>\n<p>Please see <a href=\"https://api.shuttleglobal.com\">api.shuttleglobal.com</a> for the latest APIs.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"6049226","collectionId":"761f7378-b500-44c8-839b-304826336f93","publishedId":"SzfCU61V","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"EF5B25"},"publishDate":"2020-04-27T11:36:51.000Z"},"item":[{"name":"payments.js - v1.0.X","item":[{"name":"Onboarding / Setup Popover","item":[],"id":"d421dd84-2daf-40e3-8cca-1c6798b29adc","description":"<p>To allow a merchant to SaaS Checkout for their gateway, add a “Configure Payments” button or hyperlink on your settings page. The recommended button approach will pre-load assets to make the user experience more seamless, whereas the Javascript function will start loading assets when called.</p>\n<p>Body can either be serialised as a string or serialised as base64. If serialising as a string be careful to escape any quotes in the string.</p>\n<p>Note: If <code>instance_key</code> has no associated account, the merchant will be presented a T&amp;Cs screen to agree to. Once agreed a new account will be provisioned for them to configure. If the merchant already has an account, they will be taken straight to the setup screen.</p>\n<p><strong>Try it now: <a href=\"https://jsfiddle.net/phil_peters/kL4fzudq/41/\">JSFiddle</a></strong></p>\n<h2 id=\"options\">Options</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>var options = {\n    instance_key: \"10000\",\n    company_name: \"Dave's Bakery\",\n    company_country: \"US\",\n    contact_name: \"David Smith\",\n    contact_email: \"david@davesbakery.com\",\n    contract_phone: \"447985918872\"\n};\n</code></pre><div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>instance_key</code></td>\n<td>the unique instance_key identifying the merchant / client, in general this will be <code>merchant_id</code> or <code>your_environment_name + merchant_id</code> eg <code>1</code> or <code>PROD_1</code></td>\n</tr>\n<tr>\n<td><code>company_name</code></td>\n<td>(optional) the name of the merchant - this will be prompted for if not passed</td>\n</tr>\n<tr>\n<td><code>company_country</code></td>\n<td>(optional) the 2 letter country code of the merchant - this will be prompted for if not passed</td>\n</tr>\n<tr>\n<td><code>contact_name</code></td>\n<td>(optional) the name of the primary contact - this will be prompted for if not passed</td>\n</tr>\n<tr>\n<td><code>contact_email</code></td>\n<td>(optional) the contact email of the primary contact - this will be prompted for if not passed</td>\n</tr>\n<tr>\n<td><code>contact_phone</code></td>\n<td>(optional) the contact phone of the primary contact - this will be prompted for if not passed</td>\n</tr>\n<tr>\n<td><code>receipt_format</code></td>\n<td>(optional) the format for receipt ID generation, by default this is <code>BOLT-#TRANSACTIONKEY#</code>, please be sure to include <code>#TRANSACTIONKEY#</code> in the format to ensure receipts are always unique.</td>\n</tr>\n<tr>\n<td><code>locale</code></td>\n<td>(optional) the 2 letter language code or full locale (eg en or en_US). If you pass this, this locale will be used in the popover, otherwise it will use the browsers locale, or IP lookup where no browser locale. If the language is not available, the default language will be returned. Typically this is English, however you can customise it.</td>\n</tr>\n<tr>\n<td><code>no_redirect</code></td>\n<td>(available in <code>payments-1.0.10</code>) true / false: disable redirecting to the setup process on mobile devices. Typically on mobile devices, rather than a popover, the user is redirected to the setup process and on close, redirected back to the page they were on. This is to overcome poor performance of mobile devices showing full screen iframes over existing websites. This parameter will disable this behaviour.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"method\">Method</h2>\n<p>To use button DOM attributes, you will need to populate:</p>\n<ul>\n<li><code>data-bolt-setup</code>: With the serialised options</li>\n<li><code>data-bolt-signature</code>: With the signature</li>\n</ul>\n<p>eg <code>&lt;button data-bolt-setup=\"options\" data-bolt-signature=\"signature\"&gt;&lt;/button&gt;</code></p>\n<p>for Javascript, call:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>var options = {...};\nvar signature = generateSignature(options);\n// Note: signature generation should be server side,\n// never pass your secret-key to the client browser \n\nBolt.saas.doSetup(options, signature);\n</code></pre>","event":[{"listen":"prerequest","script":{"id":"8eafe6cf-c24f-4129-82d2-a5be1b2456c8","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"998c7d01-c38c-4e4e-a28c-10b0a6dfddbb","type":"text/javascript","exec":[""]}}],"_postman_id":"d421dd84-2daf-40e3-8cca-1c6798b29adc","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{session_key}}"}]},"isInherited":true,"source":{"_postman_id":"761f7378-b500-44c8-839b-304826336f93","id":"761f7378-b500-44c8-839b-304826336f93","name":"Shuttle - Legacy","type":"collection"}}},{"name":"Payment Popover","item":[],"id":"ea074e2c-77e3-4b7d-a5af-afc71451fcbd","description":"<p>The payment popover works the same way as onboarding, simply contruct your options and signature. Note you can pass a <code>success_url</code> which will redirect the browser to a new URL on successful payment, or catch the javascript window message. </p>\n<p><strong>Try it now: <a href=\"https://jsfiddle.net/phil_peters/qfyta0wk/28/\">JSFiddle</a></strong></p>\n<h2 id=\"options\">Options</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>var options = {\n    instance_key: \"10000\",\n    amount: \"100\",\n    currency: \"USD\"\n};\n</code></pre><p>Where <code>options</code> supports:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>...</code></td>\n<td>All parameters from the <a href=\"https://api.paywithbolt.com/?version=latest#2ede352b-e4e8-494b-9d24-f8d8f1fd2b83\">REST API</a> except <code>payment_method</code>  - this must be selected by the user. You do not not need to nest within a <code>payment</code> tag (optional)</td>\n</tr>\n<tr>\n<td><code>no_redirect</code></td>\n<td>(available in <code>payments-1.0.10</code>) true / false: disable redirecting to the payment process on mobile devices. Typically on mobile devices, rather than a popover, the user is redirected to the payment process and on close, redirected back to the page they were on. This is to overcome poor performance of mobile devices showing full screen iframes over existing websites. This parameter will disable this behaviour.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"method\">Method</h2>\n<p>To use button DOM attributes, you will need to populate:</p>\n<ul>\n<li><code>data-bolt-payment</code>; With the serialised options</li>\n<li><code>data-bolt-signature</code>: With the signature</li>\n</ul>\n<p>eg <code>&lt;button data-bolt-payment=\"options\" data-bolt-signature=\"signature\"&gt;&lt;/button&gt;</code></p>\n<p>for Javascript, call:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>var options = {...};\nvar signature = generateSignature(options);\n// Note: signature generation should be server side,\n// never pass your secret-key to the client browser \n\nBolt.saas.doPayment(options, signature);\n</code></pre>","event":[{"listen":"prerequest","script":{"id":"ba36c7bd-4df5-4cfe-9c8c-9b2cfd080e8f","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"9e625b08-d4ad-4988-a19b-8b954b159b4e","type":"text/javascript","exec":[""]}}],"_postman_id":"ea074e2c-77e3-4b7d-a5af-afc71451fcbd","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{session_key}}"}]},"isInherited":true,"source":{"_postman_id":"761f7378-b500-44c8-839b-304826336f93","id":"761f7378-b500-44c8-839b-304826336f93","name":"Shuttle - Legacy","type":"collection"}}},{"name":"Window Events","item":[],"id":"8df14ef1-abcc-405f-816a-d8aadb2aabbb","description":"<p>The following events are raised by the popover:</p>\n<ul>\n<li><code>PAYMENT_CLOSE</code>: Raised by both \"Setup\" and \"Payment\" whenever the popover is closed, you may wish to use this trigger to check the status of setup / payment and perform subsequent logic.</li>\n<li><code>PAYMENT_SUCCESS</code>: Raised by \"Payment\" whenever a payment is successfully \"processed\". Please note, in this context, the event will be raised if a recurring schedule created and no initial payment processed, and also if a payment is submitted for processing but still in a PENDING or UNRESOLVED status. As such its recommended to use this trigger to fetch the payment (using the <code>alt_key</code> you used to submit the payment) and decide your subsequent logic based on status. This event is raised PRIOR to the close of the popover so take into consideration if navigating away from the page.</li>\n</ul>\n<p>An example of catching window events is included below:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>window.addEventListener(\"message\", function(e) {\n    var payload = typeof e.data == \"string\" ? JSON.parse(e.data) : e.data;\n  \n    if (payload.message) {\n        console.log(\"Event: \" + payload.message);\n    }\n});\n</code></pre><p>Where:</p>\n<ul>\n<li>Its possible for other code / browser extensions to raise their windows messages, as such always check for the <code>message</code> type.</li>\n<li><code>e.data</code> should always be an object, however for backwards compatibility its recommended to also support the serialised form as shown above.</li>\n</ul>\n","event":[{"listen":"prerequest","script":{"id":"9b16cf3d-0064-4125-9cd3-9ca4d7d626d6","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"6e3907ec-097e-40e6-821e-d23758baec7d","type":"text/javascript","exec":[""]}}],"_postman_id":"8df14ef1-abcc-405f-816a-d8aadb2aabbb","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{session_key}}"}]},"isInherited":true,"source":{"_postman_id":"761f7378-b500-44c8-839b-304826336f93","id":"761f7378-b500-44c8-839b-304826336f93","name":"Shuttle - Legacy","type":"collection"}}}],"id":"15f70936-83b2-4f04-9cd8-e984e3c9fa9e","description":"<p>The client side library provides an onboarding / setup popover and a payment/checkout popover. The popover appears within your page as a translucent iFrame to provide segmentation of PCI DSS compliance responsibility away from your platform. </p>\n<p>To use these popovers:</p>\n<p><strong>1. Include the Javascript Library</strong></p>\n<p>Include the following file on all pages you launch popups from:</p>\n<p><code>&lt;script src=\"https://payments.withbolt.com/b/web/s/payments-1.0.11.min.js\"&gt;</code></p>\n<p><strong>2. Decide if integrating via DOM Attributes or Javascript</strong></p>\n<p>Using button DOM attributes will bind the popup to the onClick event of the element, for example, the below button will trigger the popup when clicked, this is the recommended approach:</p>\n<p><code>&lt;button data-bolt-setup=\"options\" data-bolt-signature=\"signature\"&gt;&lt;/button&gt;</code></p>\n<p>Note: Button attributes are detected on page load, if you render the button on the page AFTER page load, call <code>Bolt.saas.bindButtons();</code> after your render cycle.</p>\n<p>Using the Javascript method will launch the popup immediately, however as it is not pre-loaded, will take longer to open, for example, <code>Bolt.saas.doSetup(options, signature);</code></p>\n<p><strong>3. Construct the <code>options</code> for the popup</strong></p>\n<p>Options is a Javascript object containing the allowed parameters for the method. </p>\n<p>When using with button attributes, you will need to stringify <code>JSON.stringify(options);</code>. Take care to escape any quotes in the string, or alternatively you can base64 encode it <code>base64encode(JSON.stringify(options));</code>.</p>\n<p>We provides serverside SDKs to facilitate this.</p>\n<p><strong>4. \"Sign\" the request with a <code>signature</code></strong></p>\n<p>The easiest way to create a signature is via the SDKs. To manually create a signature, follow the below:</p>\n<ol>\n<li>Create a timestamp in ms from 1970 eg <code>new Date().getTime()</code> (it will be a 13 digit number eg 1571677967213)</li>\n<li>Stringify your <code>options</code>, omitting <code>host</code>, and <code>nonce</code> eg <code>var signatureBody = JSON.stringify(_.omit(options, \"host\", \"nonce\"));</code></li>\n<li>MD5 the concatenation of <code>timestamp + methodName + signatureBody + secret_key</code>, where methodName is <code>doSetup</code> or <code>doPayment</code>, and secret_key is your app's secret key from the developer portal</li>\n<li>Your signature is: <code>shared_key + \"-\" + timestamp + \"-\" + md5</code>, where shared_key is your app's shared key from the developer portal</li>\n</ol>\n<p>We provides serverside SDKs to facilitate this.</p>\n<p><strong>5. Catch client side events</strong></p>\n<p>The popovers will communicate back to your app with client side Javascript <code>window.postMessage</code> notifications, for instructions on how to catch these, see <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage\">here</a>.</p>\n","event":[{"listen":"prerequest","script":{"id":"c53b81fd-c048-4828-8db9-7b6ce4dfc7f2","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"e116dada-e953-434c-8d01-5a26d6c81669","type":"text/javascript","exec":[""]}}],"_postman_id":"15f70936-83b2-4f04-9cd8-e984e3c9fa9e","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{session_key}}"}]},"isInherited":true,"source":{"_postman_id":"761f7378-b500-44c8-839b-304826336f93","id":"761f7378-b500-44c8-839b-304826336f93","name":"Shuttle - Legacy","type":"collection"}}},{"name":"Old Releases > 12 months","item":[{"name":"20201214","item":[],"id":"88dd1293-e5fe-40d1-b493-48af1b097ca0","description":"<p><strong>New Features</strong> </p>\n<p>Sandbox Gateway</p>\n<ul>\n<li>Added a card that emulates failed refunds</li>\n</ul>\n<p>API</p>\n<ul>\n<li>(enterprise) Added logout API</li>\n</ul>\n<p><strong>Improvements</strong></p>\n<ul>\n<li>Updated the UUID mechanism to generate more unique values</li>\n</ul>\n<p><strong>Bug Fixes</strong> </p>\n<ul>\n<li>Fixed an issue with the Sandbox Gateway hosted payments emulator</li>\n<li>Fixed an issue whereby a payment instruction specified at a higher precision than the currency's minimum unit was being rejected with \"Request Tampering\" (eg $1.234). This will now be passed through to the gateway.</li>\n</ul>\n","event":[{"listen":"prerequest","script":{"id":"dd895298-d88b-4407-9ef7-da96d7a8c466","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"08c0666d-105f-47d5-8deb-8188d15c584b","type":"text/javascript","exec":[""]}}],"_postman_id":"88dd1293-e5fe-40d1-b493-48af1b097ca0","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{session_key}}"}]},"isInherited":true,"source":{"_postman_id":"761f7378-b500-44c8-839b-304826336f93","id":"761f7378-b500-44c8-839b-304826336f93","name":"Shuttle - Legacy","type":"collection"}}},{"name":"20201119","item":[],"id":"17c18760-bc2f-4d8e-892f-4e4dfc4693c8","description":"<p><strong>New Features</strong> </p>\n<p>API</p>\n<ul>\n<li>Transactions now return:<ul>\n<li><code>gateway_view_transaction</code> for gateways that support it a link to the the processor's dashboard for this transaction</li>\n<li><code>expires</code> if action = <code>AUTH</code> the date the authorisation expires (where known)</li>\n<li><code>refund</code> if action == <code>REFUND</code> a link to the refund object</li>\n</ul>\n</li>\n</ul>\n<p>Merchant View</p>\n<ul>\n<li>Authorisations now display expiry dates (where available)</li>\n<li>Transactions include links to the processort portal (where available)</li>\n</ul>\n<p><strong>Improvements</strong></p>\n<ul>\n<li>Instance name is now optional</li>\n<li>You can now pass <code>tags</code> on the payment API in the account object</li>\n<li>MOTO payments now prevent request tampering</li>\n<li>\"Quickbooks Payments\" now allows you to tokenise payment methods under your existing Quicbooks user objects. Just pass the Quickbooks contact id as a tag on the account prefixed with <code>QB-</code> eg <code>QB-12345</code> will link a Shuttle account and Quickbooks account <code>12345</code>.</li>\n</ul>\n","event":[{"listen":"prerequest","script":{"id":"be718de2-5c22-418f-aabc-6a05a9ed9ad3","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"4ab535bd-256e-4571-a7bd-eb81f4969dba","type":"text/javascript","exec":[""]}}],"_postman_id":"17c18760-bc2f-4d8e-892f-4e4dfc4693c8","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{session_key}}"}]},"isInherited":true,"source":{"_postman_id":"761f7378-b500-44c8-839b-304826336f93","id":"761f7378-b500-44c8-839b-304826336f93","name":"Shuttle - Legacy","type":"collection"}}},{"name":"20201115","item":[],"id":"117ce4fe-9a46-401d-90cb-ef5e52ba9d71","description":"<p>We've updated the developer portal to make it faster and easier to use, in addition we've added a number of new features and improvements outlined below.</p>\n<p>One of the key changes is adding and editing an account is now separate from configuring a payment processor. This streamline the payment processor configuration. We've also embeded the upcoming payment configuration'</p>\n<p><strong>New Features</strong> </p>\n<ul>\n<li><p>Application receipt format: Improve the branding of your app by controlling how transaction references are generated  eg \"APPNAME-0000001\", you can also configure this on a merchant by merchant basis</p>\n</li>\n<li><p>Merchant view customisation: Streamline your user's experience in the merchant view by removing unnecessary or unwanted features: </p>\n<ul>\n<li>Recurring Payments: If your application does not use recurring payments, this will remove all references to them<ul>\n<li>Schedule Amendments: If you need schedule amendments to be instructed by your platform, you can remove manual amendmentsfrom the merchant view</li>\n</ul>\n</li>\n<li>Staff payments: Remove the ability for staff to enter MOTO payments</li>\n<li>Staff payment method entry: Remove the ability for staff to enter payment method details</li>\n<li>Manual void / capture: Remove the ability for manually instructing a capture / void on an authorisation</li>\n<li>Staff refunds: Remove the ability to instruct a refund from the merchant view</li>\n<li>\"Offline\" refunds: Remove the ability to instruct a manual refund in the merchant view (meaning all refunds must be processed by the payment processor)</li>\n<li>Account add / edit: Remove the ability to add or edit account (customer) details in the merchant view</li>\n<li>Payment method edit / delete: Remove the ability to edit or delete a payment method's in the merchant view</li>\n<li>Comments: Remove the ability to make comments on objects (like contracts) in the merchant view</li>\n</ul>\n</li>\n<li><p>Accounts Add: You can now create both Sandbox and Live accounts in the portal, along with their <code>instance_key</code> and <code>receipt_format</code></p>\n</li>\n<li><p>Account Edit: You can now edit both Sandbox and Live accounts in the portal, along with their</p>\n<ul>\n<li><code>application</code>: Move an instance between applications</li>\n<li><code>instance_key</code>: Update the primary key of the instance</li>\n<li><code>receipt_format</code>: Change how transaction references are generated</li>\n</ul>\n</li>\n<li><p>Account Termination: You can now terminate instances directly from the portal, one by one or in bulk for sandbox accounts</p>\n</li>\n<li><p>Billable Transactions: Each account now has a monthly graph of \"billable transactions\" to better understand platform usage</p>\n</li>\n<li><p>Account View: We've created an account view embeding the Payment Configuration &amp; Merchant View components to make it easier to use </p>\n</li>\n<li><p>Payment processor configuration has seem a complete overhaul, with a brand new user experience. The intent is for this to supercede the current setup component in due course, however for now we are interested in user feedback.</p>\n<ul>\n<li>Multi-Processor: Connect many payment processors, and decide how you want to ROUTE payment instructions into those payment processors</li>\n<li>Smart Checkout: Build a complex checkout by combining cards, ACH, SEPA, PayPal and many other payment types</li>\n<li>Payment Method Control: Enable / disable different methods of payment, or route through different processors, eg disable cards or ACH</li>\n<li>Run-down Processors: Change your primary cards processor, whilst retaining the existing one for the cards you have vaulted, or to refund historical transactions.</li>\n<li>Style: This component can be styled to match the look and feel of your application (like we have done with the dev portal)</li>\n<li>Country Navigation: Payment processors are listed by country</li>\n</ul>\n</li>\n</ul>\n","_postman_id":"117ce4fe-9a46-401d-90cb-ef5e52ba9d71","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{session_key}}"}]},"isInherited":true,"source":{"_postman_id":"761f7378-b500-44c8-839b-304826336f93","id":"761f7378-b500-44c8-839b-304826336f93","name":"Shuttle - Legacy","type":"collection"}}},{"name":"20201111","item":[],"id":"388ed4aa-121c-450c-a204-67010b708905","description":"<p><strong>New Features</strong></p>\n<ul>\n<li>Applications now support a default_receipt_format, which allows you to control how receipts are generated for child instances (eg \"APP_NAME-00000001\")</li>\n<li>API - PUT instances now supports updating receipt format</li>\n</ul>\n<p><strong>Improvements</strong></p>\n<ul>\n<li>Checkout - Added routing logic to allow multiple wallets to be configured in a single checkout</li>\n<li>Checkout - Now supports \"offline\" payment methods (soon to be launched)</li>\n<li>Checkout - The ability to include footer text in the checkout window (for T&amp;Cs see <code> web.footer.text</code>)</li>\n<li>Transbank - Now uses Banco Central for CLF -&gt; CLP FX</li>\n<li>Checkout.com - Now supports \"Require Account Name\" and \"Require Email\" configuration options for their fraud checks</li>\n<li>Internal - Many performance improvements</li>\n<li>Internal - This release contains many backend architectural changes</li>\n<li>API - refund objects now include a \"manual\" flag to indicate if the refund was performed online or not</li>\n</ul>\n<p><strong>Bug Fixes</strong></p>\n<ul>\n<li>Paypoint - Fixed an issue with Paypoint not rendering correctly in web checkout</li>\n<li>Emails - Fixed card due to expire emails not correctly being sent on the first payment in a recurring contract (enterprise)</li>\n</ul>\n<p><strong>Localisation Updates</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Note</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>web.footer.text</code></td>\n<td>(default ) If populated it will be included at the bottom of the checkout screen. This supports \"Mark Down\" do you can include links eg \"[Terms &amp; Conditions](<a href=\"https://url\">https://url</a>) Apply\"</td>\n</tr>\n<tr>\n<td><code>web.payment_form.button.process_offline</code></td>\n<td>(default \"Pay via #GATEWAY#\") We have added the ability to support \"Offline\" payment methods, like VEEM which does require any user input but in that case sends the user an email post payment. This string defines the default labelling of this payment option.</td>\n</tr>\n<tr>\n<td><code>web.payment_form.name.placeholder</code></td>\n<td>(default \"Name\") The placeholder text on the \"name\" field where a card requires the cardholder name</td>\n</tr>\n<tr>\n<td><code>setup.add-new-connection.modal.connect.cancel</code></td>\n<td>(default \"Connection canceled by user.\") Displayed when an OAUTH process is cancelled.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"2213fb12-6366-4d82-8f45-d4f7bf05258c","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"55719162-3afd-470d-88f4-02de1ec73ab1","type":"text/javascript","exec":[""]}}],"_postman_id":"388ed4aa-121c-450c-a204-67010b708905"},{"name":"20201026","item":[],"id":"05121370-b1b7-4229-8e6c-a87bec498ebe","description":"<p><strong>Improvements</strong></p>\n<ul>\n<li>Checkout: Creating a signature now not only secures the request but restricts the api key created to only the payment instruction signed for</li>\n</ul>\n<p><strong>Bug Fixes</strong></p>\n<ul>\n<li>Fixed a web checkout screen rendering issue when overiding the default iFrame behaviour, and forcing checkout to render in an iFrame.</li>\n</ul>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"4de891e0-c508-4f87-a33a-ad0762a9fc6b","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"7158ff3b-57f4-456a-90bd-441114bc34a8","type":"text/javascript","exec":[""]}}],"_postman_id":"05121370-b1b7-4229-8e6c-a87bec498ebe"},{"name":"20201020","item":[],"id":"d2b109c8-1e84-440a-a40b-d14d9075f41d","description":"<p><strong>New Features</strong></p>\n<p>API</p>\n<ul>\n<li>Gateways API now returns currencies supported by each gateway</li>\n<li>PUT contract now allows setting the next_payment to \"now\"</li>\n</ul>\n<p>Checkout</p>\n<ul>\n<li>Added the ability for gateways (and in particular braintree) to specify different client side JS for different payemnt methods</li>\n<li>Added support for OFFLINE payment methods to support payment methods thats do not require any UX eg VEEM</li>\n<li>Set a numeric keyboard on mobile devices for card/expiry/cvc</li>\n</ul>\n<p>Cash Management (enterprise)</p>\n<ul>\n<li>Added auditing to deposit_slips, deposit_slip_bags </li>\n<li>Deposit slip now support removing from bag</li>\n</ul>\n<p>Gateways</p>\n<ul>\n<li>Auth.net refunds are now passed a reference ID</li>\n<li>Auth.net can now make enable requesting a CVC for tokenised payments </li>\n<li>Quickbooks Payments - added support for AVS</li>\n<li>Quickbooks Payments - added support to pass an accounts' Quickbooks ID as a \"tag\" (QB-{tag}) so that saved cards are stored under a preexisting quicbooks account. </li>\n<li>Gateways now indicate if they require support for PENDING in their FEATURES. Developers should ensure they support webhooks if using these gateways.\n  REQUIRE_PAYMENT_PENDING - payment / authorise might return PENDING status \n  REQUIRE_REFUND_PENDING - refund might return PENDING status\n  REQUIRE_CAPTURE_PENDING - capture might return PENDING status</li>\n</ul>\n<p><strong>Bug Fixes</strong></p>\n<ul>\n<li>PUT legal_entity_routes - 404 bug resolved</li>\n<li>Auth.net now handles duplicate customer payment profiles</li>\n</ul>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"99f27d39-1319-4723-91b8-86b98e99abaf","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"bb237203-2085-4fdc-97a0-aa1fb5a2771f","type":"text/javascript","exec":[""]}}],"_postman_id":"d2b109c8-1e84-440a-a40b-d14d9075f41d"},{"name":"20210902","item":[],"id":"2b495bed-5623-4040-8ea8-2bb8c27cd318","description":"<p><strong>New Features</strong></p>\n<ul>\n<li>Some gateways allow you to capture more than the authorised amount (eg PayPal), to support this we have added <code>max_capturable</code> to authorisation transactions, you can now capture up to this amount. </li>\n<li>Added webhooks for instance management - INSTANCE.CREATED, INSTANCE.UPDATE, INSTANCE.ARCHIVE</li>\n<li>Refunds / captures performed through Stripe Dashboard are now reflected in Shuttle</li>\n</ul>\n<p><strong>Improvements</strong></p>\n<ul>\n<li>Added support for 13 digit VISA cards</li>\n<li>During checkout when forcing \"save_card\" for a wallet, changed the behaviour from presenting \"Add Card\" + \"Pay by [Wallet]\", as they are functionally equivalent - only \"Pay by [Wallet]\" will appear</li>\n<li>Braintree now validates vaulted cards</li>\n<li>When embedding the \"Merchant View\" shuttle will automatically adjust the height of the iFrame</li>\n<li>Improved performance when saving a gateway, and refreshing a gateway's access token</li>\n<li>Square now recognised the country the merchant is from and adjusts the available functionality (payment while vaulting a card not available in Europe)</li>\n</ul>\n<p><strong>Bug Fixes</strong></p>\n<ul>\n<li>Fixed an issue with the capabilities API not always reflecting changes immediately</li>\n<li>Stripe - fixed an issue where email was not passed correctly for onboarding new accounts</li>\n<li>Fixed an IE11 issue during checkout</li>\n<li>Fixed deep_link creation error message when an invalid enumeration used</li>\n<li>Fixed an issue when reinstating a CANCELLED contracts in which cancel_retries was set to true</li>\n</ul>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"32ce0ce8-1fb1-4a44-a301-aed9286baff1","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"fbe17062-e1c8-4b77-88ad-ce983b3909e2","type":"text/javascript","exec":[""]}}],"_postman_id":"2b495bed-5623-4040-8ea8-2bb8c27cd318"},{"name":"20210824","item":[],"id":"a112f222-9417-40e3-96ee-66d2d217eaa1","description":"<p><strong>Improvements</strong></p>\n<p>Merchant View</p>\n<ul>\n<li>The merchant view now supports window events <code>DASHBOARD_DISPLAY</code>, <code>DASHBOARD_ERROR</code>, <code>SESSION_EXTEND</code></li>\n</ul>\n<p><strong>Bug Fixes</strong></p>\n<p>Merchant View </p>\n<ul>\n<li>Various UX bug fixes</li>\n<li>Better support for international phone numbers</li>\n</ul>\n<p>Onboarding</p>\n<ul>\n<li>Fixed component height when a modal popup is bigger than the underlying page</li>\n</ul>\n<p><strong>Localisation</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Code</th>\n<th>Label</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>dashboard.general.buttons.download</code></td>\n<td>download</td>\n</tr>\n<tr>\n<td><code>dashboard.general.buttons.upload</code></td>\n<td>upload</td>\n</tr>\n<tr>\n<td><code>dashboard.general.buttons.remove</code></td>\n<td>remove</td>\n</tr>\n<tr>\n<td><code>dashboard.general.input.upload.size-error</code></td>\n<td>The maximum file size allowed is 16kb</td>\n</tr>\n<tr>\n<td><code>processing.general.buttons.download</code></td>\n<td>download</td>\n</tr>\n<tr>\n<td><code>processing.general.buttons.upload</code></td>\n<td>upload</td>\n</tr>\n<tr>\n<td><code>processing.general.buttons.remove</code></td>\n<td>remove</td>\n</tr>\n<tr>\n<td><code>processing.general.input.upload.size-error</code></td>\n<td>The maximum file size allowed is 16kb</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"bff09db5-8247-43a1-b27f-a16adfea351f","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"a6acdd0f-ac6b-4c9a-87eb-f35b28d58e25","type":"text/javascript","exec":[""]}}],"_postman_id":"a112f222-9417-40e3-96ee-66d2d217eaa1"},{"name":"20210722","item":[],"id":"5e85dcb7-7d51-4f44-af8c-5a603c6794d5","description":"<p><strong>New functionality</strong></p>\n<ul>\n<li>Authenticate: You can now use Shuttle for a customer to login via PayPal and collect shipping address during checkout (see Deep Links &gt; Authenticate)</li>\n</ul>\n<p><strong>Improvements</strong></p>\n<p> API </p>\n<ul>\n<li>Instance API now supports <code>instance_key</code> field</li>\n<li>Gateways API now supports:<ul>\n<li><code>features</code>: Identify which features the gateway supports</li>\n<li><code>checkout_js</code>: Javascript that must be injected at checkout</li>\n<li><code>authenticate_js</code>: Javascript that must be injected at authenticate\n  The API also supports <code>expand</code> both <code>checkout_js</code> and `authenticate_js</li>\n</ul>\n</li>\n<li>Some APIs did not apply a default order, this now defaults to \"created:asc\"</li>\n</ul>\n<p>Go Cardless</p>\n<ul>\n<li>Now payments updates appear on the <code>transaction</code> object rather than just the audit history, triggering PAYMENT.UPDATE webhook. Gocardless webhooks are also captured in the <code>gateway_metadata</code></li>\n</ul>\n<p>Braintree</p>\n<ul>\n<li>Resolved issue \"Cannot read property 'email' of undefined\"</li>\n</ul>\n<p>Stripe </p>\n<ul>\n<li>Resolved stripe refunds showing up as a negative in the settlement amount</li>\n</ul>\n<p>PayPoint</p>\n<ul>\n<li>Added additional logging due to Paypoint occasional unavailability error</li>\n</ul>\n<p>Checkout</p>\n<ul>\n<li>AVS mandatory fields updates to address line 1, city, postcode.</li>\n</ul>\n<p>Onboarding</p>\n<ul>\n<li>Countries now ordered alphabetically</li>\n<li>Widget height calculation now takes into account popups</li>\n<li>Fixed an issue with subfield checkbox rendering (GoCardless)</li>\n</ul>\n<p>Portal</p>\n<ul>\n<li>You can now update your own details</li>\n<li>Added internationalisation to number formatting</li>\n</ul>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"121f2d71-8680-471f-8807-7eb15180a5f3","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"462233dd-a477-4bce-b2c5-c2c1e2747951","type":"text/javascript","exec":[""]}}],"_postman_id":"5e85dcb7-7d51-4f44-af8c-5a603c6794d5"},{"name":"20210608","item":[],"id":"403b9f95-4b73-4584-9832-319923e34910","description":"<p><strong>API</strong></p>\n<p><strong>New Features</strong></p>\n<ul>\n<li>You can now fetch and update gateway configuration via the <code>/gateway/:id/settings</code> API</li>\n<li>(enterprise) New communication APIs available to access system emails</li>\n</ul>\n<p><strong>Improvements</strong></p>\n<ul>\n<li><code>transaction</code> objects now return <code>voided</code> and <code>authorised</code> (amount - captured - voided) where appropriate</li>\n<li>Sessions now return <code>ip_address_currency</code> and <code>ip_address_country</code></li>\n<li>You can now query <code>payment_methods</code> by merchant, you no longer need to specify an account </li>\n<li>Where possible we will no longer return fields which are not used, such as <code>split</code> if split payments are not used</li>\n</ul>\n<p><strong>Onboarding</strong></p>\n<p><strong>New Features</strong></p>\n<ul>\n<li>You can filter the list of gateways available during onboarding on a case by case basis, via <code>processor_filter</code> field. This allows you to streamline connecting a specific payment processor</li>\n</ul>\n<p><strong>Improvements</strong></p>\n<ul>\n<li>When only a single payment processor available, the merchant is no longer presented the processor selection page</li>\n<li>When a session expires the screen transitions to a session expired page, rather than failing on next interaction</li>\n</ul>\n<p><strong>Bug Fixes</strong></p>\n<ul>\n<li>Fixed an issue where in some cases the UX would be vertically cropped</li>\n</ul>\n<p><strong>Checkout</strong></p>\n<p><strong>Improvements</strong></p>\n<ul>\n<li>Checkout has been enhanced to better support VEEM</li>\n<li>You can now pass <code>default_occurrences</code> to checkout to allow this field to be editable pre-populated with the default</li>\n<li>You can now pass \"false\" for <code>default_occurrences</code> and <code>default_start_date</code> to allow these fields to be default deselected but edited by the user</li>\n<li>Changes the UX flow where the amount is editable however the configured gateway needs to know the amount in their embedded library</li>\n</ul>\n<p><strong>Admin Portal</strong></p>\n<p><strong>Improvements</strong></p>\n<ul>\n<li>You can now see your organisation id</li>\n<li>Removed the legacy gateway setup buttons </li>\n<li>When a session expires the screen transitions to a session expired page, rather than failing on next interaction</li>\n</ul>\n<p><strong>Bug Fixes</strong></p>\n<ul>\n<li>Fixed the % change calculation when looking at month on month growth</li>\n<li>Fixed an issue where localisation editor would sometimes be displayed when disabled</li>\n<li>Fixed some UX display issues</li>\n</ul>\n<p><strong>Stripe</strong></p>\n<ul>\n<li>Fixed an issue for merchants with with non utf8 content in their company name</li>\n</ul>\n<p><strong>Worldpay</strong></p>\n<ul>\n<li>Transactions are now populated with metadata containing the API requests used to communicate with Worldpay</li>\n</ul>\n<p><strong>Transbank</strong></p>\n<ul>\n<li>The Transbank integration has been upgraded to the new REST integration</li>\n<li>The Transbank SOAP integration has been deprecated and is no longer available for new connections.</li>\n</ul>\n<p><strong>PayPal Commerce</strong></p>\n<ul>\n<li>Now available! </li>\n<li>The Paypal Business integration has been deprecated and is no longer available for new connections.</li>\n</ul>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"ae0bc969-24c4-4823-a3d8-f0f3607f0e97","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"52272ad0-95cb-4760-9583-7beedde40e70","type":"text/javascript","exec":[""]}}],"_postman_id":"403b9f95-4b73-4584-9832-319923e34910"},{"name":"20210601","item":[],"id":"66836abc-2dd1-4e45-9427-524af0da5b20","description":"<p><strong>New Features</strong></p>\n<ul>\n<li>Recurring payment cancel API now supports <code>cancel_retries</code> if you want to run your own dunning process</li>\n</ul>\n<p><strong>Improvements</strong></p>\n<ul>\n<li>Select box placeholders are now localised</li>\n<li>You can now instruct a payment via a gateway token without specifying the <code>gateway_id</code></li>\n<li>Various optimisations to provide better audit trails on objects</li>\n<li>Portal now supports account lockout due to too many login attempts</li>\n<li>Support for REDCOMPRA payment method</li>\n</ul>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"25b15d19-af2b-4b34-a56d-164d82402abf","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"91340a27-d2da-4aaf-a291-62b230546336","type":"text/javascript","exec":[""]}}],"_postman_id":"66836abc-2dd1-4e45-9427-524af0da5b20"},{"name":"20210521","item":[],"id":"b667c183-380a-40ec-b3c1-0b856757c780","description":"<p><strong>New Features</strong></p>\n<ul>\n<li>You can now pass in the gateway token when instructing an API payment</li>\n</ul>\n<p><strong>Improvements</strong></p>\n<ul>\n<li>Refunds will now trigger PAYMENT.UPDATE webhook on the source transaction </li>\n<li>The account API no longer requires \"CRM-\" prefix when requesting account using the <code>crm_key</code></li>\n<li>Transaction API now includes the <code>processor</code> for the transaction</li>\n<li>GoCardless payment button now supports new localised text when the currency is editable</li>\n<li>Posting comments into the API now supports CORS</li>\n</ul>\n<p><strong>Bug fixes</strong></p>\n<ul>\n<li>Nonce support works with both one off payments and recurring payments</li>\n<li>Hosted payment popup no longer reports an error when a transaction is unresolved</li>\n</ul>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"fe178f97-8383-489d-9cd0-3373e5f2860e","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"1829b1c8-f1fd-41c1-a157-d471886cba15","type":"text/javascript","exec":[""]}}],"_postman_id":"b667c183-380a-40ec-b3c1-0b856757c780"},{"name":"20210428","item":[],"id":"7672d4ae-f009-4380-ade4-05bd7fc3b726","description":"<p>This release is an update to the \"Merchant View\".</p>\n<p><strong>New Features</strong></p>\n<ul>\n<li>Added manually capture / void to the transaction screen of an authorisation</li>\n<li>Added the ability to download attachments from comments</li>\n</ul>\n<p><strong>Improvements</strong></p>\n<ul>\n<li>Improved the display when configuring multiple languages, to reflect all the languages configures for the app/organisation </li>\n<li>Improved the display of refunds which were notified by the gateway but did not happen through Shuttle </li>\n<li>Streamlined the transaction timeline / audit history display</li>\n<li>General UX improvements</li>\n<li>(enterprise) General improvements around Gift Aid, emails and other components</li>\n</ul>\n<p><strong>Bug fixes</strong></p>\n<ul>\n<li>Added ordering to the audit history</li>\n<li>Fixed a UX issue when manually resolving a transaction</li>\n<li>Fixed a bug whereby the first comment on an object would sometimes be lost</li>\n<li>Fixed an issue where some users with badly configured proxies would see an encoding error</li>\n</ul>\n<p><strong>Localisation Updates</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Note</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>general.statuses.notification-received</code></td>\n<td>(default \"notification received from gateway\") When a transaction event was not initiated from Shuttle but from the gateway</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"e28a6c2b-ba10-4993-b483-7a9453ddd72e","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"5a08acb2-5dc8-4d5e-8187-31b790bbfe86","type":"text/javascript","exec":[""]}}],"_postman_id":"7672d4ae-f009-4380-ade4-05bd7fc3b726"},{"name":"20210319","item":[],"id":"0d27dc28-dec2-4261-8e0b-bf68d35170ee","description":"<p><strong>New Features</strong></p>\n<p>Merchant View</p>\n<ul>\n<li>The merchant view has had a major overhaul</li>\n<li>Styling simplified to feel more natural embedded within your application</li>\n<li>Deep links allow you to customise styling, using the same theme as onboarding</li>\n<li>Added the ability to make notes against all items in the merchant view so that you can keep track of any payment related issues / activities</li>\n<li>Added the ability to see a more detailed audit history for all objects to help you better understand what has happened and when </li>\n<li>Merchant view now allows manual capture / void of authorisations</li>\n<li>You can now edit the amount of a recurring contract</li>\n<li>You can now refund unattributed transactions</li>\n</ul>\n<p>shuttle.js 1.2.x</p>\n<ul>\n<li>The javascript library 1.2 branch has been released</li>\n<li>Added the ability to inline embed onboarding and merchant view in a div </li>\n<li>Replaced \"bindButtons()\" with bind()\" to better reflect non button binding</li>\n<li>Renamed from payments.js to shuttle.js, and simplified the URL</li>\n</ul>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"87a8e4b6-a553-4a40-b2dd-2b011c5a9f55","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"6acc78ce-fad9-4f51-bfd2-648c5f21e150","type":"text/javascript","exec":[""]}}],"_postman_id":"0d27dc28-dec2-4261-8e0b-bf68d35170ee"},{"name":"20210222","item":[],"id":"d6203710-4117-4e25-a3ed-d0c8225a86b2","description":"<p><strong>New Features</strong></p>\n<p>API</p>\n<ul>\n<li>You can now cancel a next payment attempt on a contract in arrears but passing a blank <code>next_payment</code> date</li>\n<li>Transaction objects of type REFUND now return a link to the <code>refund</code> object</li>\n<li>Transaction objects of type AUTH now return a field <code>expires</code> when the authorisation expiry date is known</li>\n<li>A gateway object now has a <code>status_reason</code><br />which may provide further information as to the gateway status. Square populate this when revoking Shuttle's access to an account from the Square dashboard </li>\n<li>Instance creation now allows unnamed instances </li>\n<li>Added the ability to log out via DELETE /sessions </li>\n<li>Added the ability to reattribute a transaction via API POST /transactions/:id/reattribute</li>\n</ul>\n<p>Recurring</p>\n<ul>\n<li>You can now pass an optional <code>write_off</code> flag when cancelling a recurring payment, if you want to write off the amount in arrears. If the contract is in arrears andf you do not pass this it will go to a <code>CANCELLING</code> status until the arrears paid.</li>\n<li>You can now \"resume\" a <code>CANCELLED</code> / <code>CANCELLING</code> contract by passing the <code>resume</code> flag</li>\n<li>You can now pass a <code>contract</code> to a payment popup, if you want to pay the amount towards the contract if is in arrears</li>\n<li>Extended the nonce functionality to prevent duplicate contracts being created even if no initial transaction </li>\n<li>Now when updating a contact's <code>next_charge</code> or <code>next_payment</code> to now, they are run within seconds rather than minutes</li>\n<li>When attaching a new payment_method to a contract, if there is an outstanding amount on the contract a payment will be attempted immediately (asynchronously)</li>\n</ul>\n<p><strong>Bug Fixes</strong></p>\n<ul>\n<li>Fixed an scenario where a recurring payment with a future start date would be created if the card tokenisation failed</li>\n<li>Fixed an issue where in some cases a payment requiring 3DS would create a second transaction for payment completion</li>\n<li>Fixed a out of bounds error on some split payments</li>\n<li>When instructing a payment with person details, if the person already exists in Shuttle their details are updated, however a person's <code>tags</code> were not being updated</li>\n<li>Fixed an issue where attaching an new payment_method to a failing contract that was not in arrears would not revert the contract to ACTIVE </li>\n<li>Cleaned up GoCardless checkout button label</li>\n<li>Fixed a card checkout issue where chrome auto fill sometimes would not automatically enable the \"Next\" button </li>\n<li>Fixed modal overlays which would  link to \"#\" if the user clicked \"Show Me\"</li>\n<li>Fixed an issue preventing a custom receipt format being saved to new instances on creation</li>\n<li>Sage Pay renamed to Opayo</li>\n</ul>\n<p><strong>Localisation Updates</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Note</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>web.payment_form.error.invalid.contract.account</code></td>\n<td>(default \"Account doesn't match contract\") When paying the arrears on a contract, presented if the contract does not belong to the user passed</td>\n</tr>\n<tr>\n<td><code>web.error.gateway_start_payment_issue</code></td>\n<td>(default \"Payment cannot be performed at this time (#REASON#)\") Some processors require we inject their code at checkout, this message is presented if there is an issue doing this.</td>\n</tr>\n<tr>\n<td><code>web.payment_form.payment.cancelled</code></td>\n<td>(default \"Payment cancelled\") Displayed if a payment is cancelled</td>\n</tr>\n<tr>\n<td><code>web.payment_form.button.change_amount</code></td>\n<td>(default \"change amount\") Displayed when a variable amount allowed on the UX, but if a gateway needs a fixed amount amount entry and card details will split into a 2 step process</td>\n</tr>\n<tr>\n<td><code>setup.processors.oauth.popup.dismiss\"</code></td>\n<td>(default \"Cancel\") Displayed on some OAUTH processes</td>\n</tr>\n<tr>\n<td><code>setup.processors.onboarding.cancelled</code></td>\n<td>(default \"Cancelled\") Displayed if a onboarding is cancelled</td>\n</tr>\n<tr>\n<td><code>setup.processors.onboarding.error</code></td>\n<td>(default \"Invalid response from onboarding.js\") Displayed if a onboarding error is encountered from gateways requiring JS injection</td>\n</tr>\n<tr>\n<td><code>setup.processors.onboarding.missing</code></td>\n<td>(default \"Missing onboarding.js file for #PROCESSOR#\") Displayed if a onboarding error is encountered from gateways requiring JS injection</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"7a6dd4c3-baac-43d2-bbfa-cc15c5cddd09","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"2ff57b95-ebf5-4ca5-b8fd-c1db94e82dc6","type":"text/javascript","exec":[""]}}],"_postman_id":"d6203710-4117-4e25-a3ed-d0c8225a86b2"},{"name":"20211213","item":[],"id":"853b599b-4481-452b-8160-65991c39233c","description":"<p><strong>Bug Fixes</strong></p>\n<ul>\n<li>Fixed an issue with some recurring payments not dunning correctly (retry policy)</li>\n</ul>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"02420b94-55ab-442a-8a7a-b83af868ed74","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"2ad3797b-b287-4b80-9aa9-911ba42e1377","type":"text/javascript","exec":[""]}}],"_postman_id":"853b599b-4481-452b-8160-65991c39233c"},{"name":"20211206","item":[],"id":"1df450d7-1a83-49b5-a7b7-6678cb6df3d9","description":"<p><strong>New Features</strong></p>\n<ul>\n<li>You can now filter gateway availability to ones that support AUTH (if you need auth/capture), SAVE_CARD (if you need vaulting), or exclude those requiring javascript injection (if you've built your own checkout that doesn't support this)</li>\n<li>Trust Payments integration now available</li>\n</ul>\n<p><strong>Improvements</strong></p>\n<ul>\n<li>GoCardless will mark a payment as success on CONFIRMED rather than SETTLED</li>\n<li>When disabling a save_card feature it will no longer be rendered</li>\n<li>Merchant view now supports cookies disabled</li>\n<li>(enterprise) role permission editor now hides archived teams</li>\n<li>(enterprise) new platform wide role permissions (see enterprise notes)</li>\n<li>Payment methods lists out any recurring payments using that method</li>\n<li>VOID events now display in the merchant view</li>\n</ul>\n<p><strong>Bug Fixes</strong></p>\n<ul>\n<li>Shipping address not passed to some gateways when paying with a saved card</li>\n<li>Merchant view transaction audit not displaying</li>\n</ul>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"d9260b28-735c-4d04-bb48-bacd511bbf52","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"56359615-6c16-41a6-ad5b-56510f57a703","type":"text/javascript","exec":[""]}}],"_postman_id":"1df450d7-1a83-49b5-a7b7-6678cb6df3d9"},{"name":"20211123","item":[],"id":"f2d7425e-50b9-4c39-84b6-e6828a6aac89","description":"<p><strong>New Features</strong></p>\n<ul>\n<li>API ability to restrict processors to those that support AUTH, SAVE_CARD, or exclude ones that require JSWRAPPER</li>\n<li>Added checkout parameter <code>force_add</code> to disable presenting saved cards on an account</li>\n</ul>\n<p><strong>Improvements</strong></p>\n<ul>\n<li>Changed legal_entity_routes to have consistent behaviour between single entity and multi entity instances</li>\n<li>Instances now returns date of last_transaction, last_contract, and also the non ARCHIVED processors </li>\n<li>CONTRACT.UPDATE now sent when updating the number of occurrences</li>\n<li>Improvements around contract retry date calculations, and retry complete, especially when it comes to manual payment attempts</li>\n<li>Added AVS support to PayPal Flow Pro</li>\n</ul>\n<p><strong>Bug Fixes</strong></p>\n<ul>\n<li>Fixed an issue where you couldn't select a saved card that was declined (and in a FAILING status) for a new contract</li>\n<li>Account edit was producing two saves / UPDATEs </li>\n<li>We now prevent a transaction previously marked as declined can be updated as success if the outstanding balance has been cleared</li>\n<li>Fixed an API issue with \"expand\" not always working consistently</li>\n</ul>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"1adf3413-c257-4119-8869-d8379b2c29ab","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"bb9ec74f-cd64-4839-beaf-af46beac9243","type":"text/javascript","exec":[""]}}],"_postman_id":"f2d7425e-50b9-4c39-84b6-e6828a6aac89"},{"name":"20211027","item":[],"id":"c28dc7bb-f1c5-4f3b-ab94-21853f6bc8ac","description":"<p><strong>New Features</strong></p>\n<ul>\n<li>You can use Shuttle in on-prem/installed scenarios (eg installing on wordpress or salesforce). You can now create a secret_key for an instance, then authenticate against the API using that </li>\n<li>You can now pass level 3 payment processing data (line_items) at checkout and these will be passed to supported gateways</li>\n<li>You can now update the number of occurrences on a recurring payment</li>\n</ul>\n<p><strong>Improvements</strong></p>\n<ul>\n<li><p>Recurring payments with a start date in the future, where you're tokenising a new card at the same time now better supports SCA to improve approval rate</p>\n</li>\n<li><p>SCA transaction data is now available in the API</p>\n</li>\n<li><p>Several performance improvements including saving a gateway</p>\n</li>\n<li><p>Gateways that dont support multi_capture no longer report a remaining authorised amount after a partial capture</p>\n</li>\n<li><p>Refunding a CAPTURE will now indicate the refund on the original AUTHORISATION in addition to on the capture, as such it will fire PAYMENT.UPDATE and CAPTURE.UPDATE webhooks.</p>\n</li>\n<li><p>Additional information on the API</p>\n<ul>\n<li>instance - secret_key</li>\n<li>capture - balance, currency, refunded</li>\n<li>contract - retry_complete</li>\n<li>payment_method: advanced_notice_hours, failing_reason, failing_since, mandate_id, requires_cvc</li>\n<li>transaction - currency, browser_ip_address, browser_accept_header, browser_javascript, browser_locale, browser_user_agent, browser_size, browser_java_enabled, browser_color_depth, browser_timezone</li>\n<li>session - permissions</li>\n</ul>\n</li>\n<li><p>Fixed an billing issue with the last day of the month's transactions not being billed</p>\n</li>\n<li><p>checkout now supports CHECKOUT_DISPLAY browser events</p>\n</li>\n</ul>\n<p><strong>Bug Fixes</strong></p>\n<ul>\n<li>Added some missing MAESTRO number ranges</li>\n<li>Fixed some localisation editor bugs</li>\n<li>Removed user_offline flag from webhooks</li>\n</ul>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"81ca91c5-13a0-4458-896d-b4303368c536","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"f662fac7-332f-4f7b-8c33-6b08751e01fa","type":"text/javascript","exec":[""]}}],"_postman_id":"c28dc7bb-f1c5-4f3b-ab94-21853f6bc8ac"},{"name":"20211006","item":[],"id":"ee56559e-cf28-4aef-b39b-101ce419be71","description":"<p><strong>Improvements</strong></p>\n<ul>\n<li>Checkout hosted processes during checkout now are dynamically sized to best suit the process</li>\n<li>Checkout address verification load speed has been improved</li>\n<li>Checkout now filter to support only ACH / SEPA / CARDS via the <code>payment_method_types</code> option</li>\n<li>Cancelling a contract with \"cancel_retries: true\" will not attempt to collect the outstanding amount</li>\n<li>If a automated recurring payment returns a 3DS challenge, this is now treated as a decline</li>\n<li>Spaces are no longer allowed in crm_key</li>\n<li>Reset password emails better handle expiration</li>\n</ul>\n<p><strong>Bug Fixes</strong></p>\n<ul>\n<li>Starting account edit was creating a new object version</li>\n<li>Could not adjust \"next_payment\" attempt for a recurring payment when on the last occurrence</li>\n<li>3D Secure display has been improved</li>\n</ul>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"d7131880-9ee5-4677-853f-eebee1102322","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"3f3c1322-b902-4f43-87d6-79be773a8bd2","type":"text/javascript","exec":[""]}}],"_postman_id":"ee56559e-cf28-4aef-b39b-101ce419be71"},{"name":"20220117","item":[],"id":"e1a5e7ec-170e-4b9c-8d66-67d50c69a01b","description":"<p><strong>New Features</strong></p>\n<ul>\n<li>Chargebacks, we've added early support for reporting chargebacks, initially on Stripe, Checkout.com and Paypal</li>\n<li>Private beta of instance specific webhooks and api_keys (designed for platforms installed on client infrastructure eg Salesforce.com or magento instance)</li>\n<li>Stripe now supports ACH, SEPA, Multibanco</li>\n</ul>\n<p><strong>Improvements</strong></p>\n<ul>\n<li>Added support for hosted authentication processes</li>\n<li>Added support for line item data in hosted checkout processes</li>\n<li>Application list performance</li>\n<li>Trust payments 3DS process now works better when style: INLINE</li>\n<li>(enterprise) Improved report performance</li>\n</ul>\n<p><strong>Bug Fixes</strong></p>\n<ul>\n<li>Checkout.com fixed an issue handling checkout.com webhooks</li>\n<li>Instance search was case sensitive in some areas, it should not be</li>\n<li>Fixed an issue with trimming long values for state on Opayo</li>\n</ul>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"9edb0f83-eb0f-41bf-9f97-be1351912c1c","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"ca186ff7-3b1c-4102-bc6d-2d7c617cbed5","type":"text/javascript","exec":[""]}}],"_postman_id":"e1a5e7ec-170e-4b9c-8d66-67d50c69a01b"},{"name":"20201126","item":[],"id":"8c8a6922-ad4e-4841-bbe8-210b9eb7d616","description":"<p><strong>New Features</strong> </p>\n<p>API</p>\n<ul>\n<li>Contract refunds are now available, refund multiple transactions in a single request</li>\n</ul>\n","event":[{"listen":"prerequest","script":{"id":"53ee5605-3018-470d-a03a-6e896f3d9266","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"e511fa70-0451-446c-9a59-5c81537e9d0e","type":"text/javascript","exec":[""]}}],"_postman_id":"8c8a6922-ad4e-4841-bbe8-210b9eb7d616","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{session_key}}"}]},"isInherited":true,"source":{"_postman_id":"761f7378-b500-44c8-839b-304826336f93","id":"761f7378-b500-44c8-839b-304826336f93","name":"Shuttle - Legacy","type":"collection"}}},{"name":"20220206","item":[],"id":"843c8dc1-0355-425d-a585-d0a501cd032d","description":"<p><strong>New Features</strong></p>\n<ul>\n<li>Support for \"scheduled payments\", applications that need to schedule payment for some point in the future can now do so with <code>scheduled_date</code> and <code>scheduled_days</code>.</li>\n</ul>\n<p><strong>Improvements</strong></p>\n<ul>\n<li>General configuration performance improvements</li>\n<li>Web checkout now supports hiding the \"save_card\" button without affecting its functionality via <code>hosted_save_card</code></li>\n<li>Webhooks raised for recurring payments have been simplified</li>\n<li>The stripe customer object is now better populated for Stripe payments</li>\n</ul>\n<p><strong>Bug Fixes</strong></p>\n<ul>\n<li>Fixed an issue with some Braintree card expiry dates not being reported correctly</li>\n<li>Fixed an issue with Venmo QR codes being cropped on Paypal Commerce</li>\n<li>Fixed an issue with \"hosted add payment method\" displaying for disabled payment methods</li>\n</ul>\n<p><strong>Localisation</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th></th>\n<th></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>error.validation.scheduled_payment.auth</td>\n<td>Scheduled payments do not support auth / capture</td>\n</tr>\n<tr>\n<td>error.validation.scheduled_payment.save_card</td>\n<td>Scheduled payments do not support <code>save_card: false</code></td>\n</tr>\n<tr>\n<td>error.validation.scheduled_payment.frequency</td>\n<td>Scheduled payments do not support frequency</td>\n</tr>\n<tr>\n<td>error.validation.scheduled_payment.date</td>\n<td>Scheduled payments must be scheduled for at least 1 minute in the future</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"7aea5813-ea39-44f6-a1b9-a6fe4e9cc344","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"c65f62f7-05ed-4a8d-90d5-bd95f88dfdc1","type":"text/javascript","exec":[""]}}],"_postman_id":"843c8dc1-0355-425d-a585-d0a501cd032d"},{"name":"20220816","item":[],"id":"f4d90fb6-3b24-4482-a24d-d7c5ee00c519","description":"<p><strong>New Features</strong></p>\n<ul>\n<li>Added PAYMENT.UNRESOLVED webhook so you can now automated actions based on this event</li>\n</ul>\n<p><strong>Improvements</strong></p>\n<ul>\n<li>More efficient handling of multiple connections to the same Stripe account</li>\n<li>GoCardless connectivity errors (502) now mapped to DECLINE_RETRY</li>\n<li>More informative error messages when handling errors during checkout from gateway javascript libraries (eg NMI 3DS issues)</li>\n<li>Improved error handling for webhooks</li>\n</ul>\n<p><strong>Bug Fixes</strong></p>\n<ul>\n<li>Fixed an issue causing payment methods to temporarily \"disappear\" for Paypal Commerce during credential refresh</li>\n</ul>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"93ad542e-253f-4b57-a38d-192dc9e19083","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"8a41ac64-8077-48f2-9429-658883c4093d","type":"text/javascript","exec":[""]}}],"_postman_id":"f4d90fb6-3b24-4482-a24d-d7c5ee00c519"},{"name":"20220722","item":[],"id":"dc35dc46-f47c-4745-a77c-b3b5ab232bc7","description":"<p><strong>New Features</strong></p>\n<ul>\n<li>We've added support for Twilio Pay to support clients that require telephone / IVR payments, please contact our support if you wish to use this</li>\n</ul>\n<p><strong>Improvements</strong></p>\n<ul>\n<li>Email addresses passed into the API are now trimmed of leading / trailing spaces to accommodate platforms with lax input validation</li>\n<li>Removed functionality that moved a payment method that had been failing for 3 months to a FAILED status, these will remain in FAILING and can continue to be retried.</li>\n<li>Scheduled payments that fail due to an technical / configuration error (DECLINE_ERROR) will now be retried in line with a temporary issue schedule (ie minutes) rather than a bank decline retry schedule (days)</li>\n<li>Improved the meta data sent to GoCardless on mandates and payments to me more useful</li>\n<li>Relabelled gateway timeouts errors to be more helpful</li>\n</ul>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"93ad542e-253f-4b57-a38d-192dc9e19083","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"8a41ac64-8077-48f2-9429-658883c4093d","type":"text/javascript","exec":[""]}}],"_postman_id":"dc35dc46-f47c-4745-a77c-b3b5ab232bc7"},{"name":"20220629","item":[],"id":"20063916-7a96-4f39-9b4a-c6923aa49f43","description":"<p><strong>New Features</strong></p>\n<ul>\n<li>Private integrations - you can now provision gateways on an account by account basis</li>\n<li>Share the URLs you are hosting checkout to enable Paypal Fraud Net and soon Apple Pay</li>\n</ul>\n<p><strong>Improvements</strong></p>\n<ul>\n<li>Onboarding now connects to the payments marketplace for merchants looking for a new processor</li>\n<li>Tokenising a payment method via API no longer requires you to specify which gateway you want to use</li>\n<li>NMI now supports 3DS, and ACH</li>\n<li>Auth.NET now supports level 2 data</li>\n<li>API keys now display in a predictable order</li>\n<li>Added \"account\" to the refund, charge and void objects</li>\n<li>List item APIs now support a between operator, for example searching between a date range</li>\n</ul>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"93ad542e-253f-4b57-a38d-192dc9e19083","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"8a41ac64-8077-48f2-9429-658883c4093d","type":"text/javascript","exec":[""]}}],"_postman_id":"20063916-7a96-4f39-9b4a-c6923aa49f43"},{"name":"20220523","item":[],"id":"fe7eeeb2-6086-4eea-90be-6a3719ad8114","description":"<p><strong>Improvements</strong></p>\n<ul>\n<li>Paypal now passes <code>alt_key</code> as <code>invoice_id</code></li>\n<li>Paypal now allows optional cancelling of billing agreements after use, to prevent the customer getting an email</li>\n<li>checkout.com now passes <code>alt_key</code> in token payments</li>\n<li>Authorize.net now adds email address to customer profiles</li>\n</ul>\n<p><strong>Bug Fixes</strong></p>\n<ul>\n<li>Opayo rejecting certain colour depths during 3ds</li>\n<li>Opayo rejecting invalid email addresses</li>\n<li>Paypal rejecting invalid shipping addresses</li>\n<li>Paypal rejecting line items with no tax specified</li>\n<li>Sandbox tokenise not correctly saving cards</li>\n</ul>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"93ad542e-253f-4b57-a38d-192dc9e19083","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"8a41ac64-8077-48f2-9429-658883c4093d","type":"text/javascript","exec":[""]}}],"_postman_id":"fe7eeeb2-6086-4eea-90be-6a3719ad8114"},{"name":"20220428","item":[],"id":"0d0bfb7e-c1a6-4997-9b49-8d138f82dab7","description":"<p><strong>New Features</strong></p>\n<ul>\n<li>You can now embed credit terms for BNPL providers on your webpage (requires shuttle.js 1.3.0+)</li>\n<li>You can now post new instances without a secret key for on-prem installs (requires manual activation)</li>\n</ul>\n<p><strong>Improvements</strong></p>\n<ul>\n<li>You can now change a payment method to \"saved cards only\" rather than fully disabling</li>\n<li>Merchant view: Improved how declined transactions render</li>\n<li>Performance improvements</li>\n<li>Added support for signature creation for payloads with non latin1 characters</li>\n<li>GoCardless now supports mandate replacement webhooks</li>\n<li>GoCardless now schedules payment instructions by 4pm to meet daily cutoffs</li>\n<li>Transactions which are waiting for 3DS to completed now return the 3DS url in the object (up to 15 minutes after requested)</li>\n</ul>\n<p><strong>Bug Fixes</strong></p>\n<ul>\n<li>Contracts don't transition to complete when the final payment is PENDING until the transaction resolved</li>\n</ul>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"93ad542e-253f-4b57-a38d-192dc9e19083","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"8a41ac64-8077-48f2-9429-658883c4093d","type":"text/javascript","exec":[""]}}],"_postman_id":"0d0bfb7e-c1a6-4997-9b49-8d138f82dab7"},{"name":"20220401","item":[],"id":"d907c907-812b-452e-ad4e-242b3f5a19b5","description":"<p><strong>New Features</strong></p>\n<ul>\n<li>Stripe now supports ACH + SEPA</li>\n<li>Affirm Buy Now Pay Later provider now available</li>\n</ul>\n<p><strong>Improvements</strong></p>\n<ul>\n<li>You can now maintain multiple Shuttle connections to the same gateway account</li>\n<li>Future payments can now be up to 365 days in the future (previously 31 days)</li>\n<li>PayTomorrow now includes a monthly price estimator at checkout</li>\n<li>Authotise.NET now supports pending (held) payments</li>\n<li>Checkout.com now performs payment as AUTH -&gt; CAPTURE to better handle 3DS failure scenarios</li>\n<li>Various improvements to Paypal Commerce integration</li>\n</ul>\n<p><strong>Bug Fixes</strong></p>\n<ul>\n<li>Opayo name fields now trimmed to max lengths</li>\n</ul>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"93ad542e-253f-4b57-a38d-192dc9e19083","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"8a41ac64-8077-48f2-9429-658883c4093d","type":"text/javascript","exec":[""]}}],"_postman_id":"d907c907-812b-452e-ad4e-242b3f5a19b5"},{"name":"20220304","item":[],"id":"4cf72d74-7df1-4061-b491-26bae9a97502","description":"<p><strong>New Features</strong></p>\n<ul>\n<li>The merchant view now displays scheduled payments in the \"Scheduler\" section</li>\n<li>The user can now edit the payment method on a scheduled payment</li>\n<li>The onboarding module now uses websockets for a live view of what's configured, providing a better experience where there's more than one user</li>\n</ul>\n<p><strong>Improvements</strong></p>\n<ul>\n<li>API transaction now has \"resolved\" date of when manually resolved</li>\n<li>Updated a hosted checkout process from presenting a TOKENISATION link when PAYMENT_AND_TOKENISATION available and requested for a more streamlined experience</li>\n<li>Merchant view advanced transaction search now allows filtering on action (\"PAYMENT\" / \"AUTH\" / \"REFUND\" etc)</li>\n<li>Saved payment methods are now filtered to only those that support the operation (for example, saved ACH details wont be presented when the user is doing an AUTH)</li>\n<li>The \"capture\" screen now defaults the \"whole\" amount to the \"authorised amount\", not the \"max capturable\" amount (when these are different)</li>\n<li>NMI now validates webhooks are configured correctly during setup</li>\n<li>The onboarding module now displays INACTIVE gateways that have saved cards stored on them and enabled as \"SAVED CARDS\", so its more clear these are still used for saved paymet methods</li>\n<li>Square now support MOTO and MIT (note, MOTO tokenisation not supported by Square)</li>\n<li>Square now supports ACH</li>\n<li>Square now passes line item detail to the gateway where available</li>\n<li>Paypal now passes line item detail to the gateway where available</li>\n<li>Paypal now supports the vaulting API (note, MOTO tokenisation not supported by Paypal)</li>\n</ul>\n<p><strong>Bug Fixes</strong></p>\n<ul>\n<li>Creating a child contract now gracefully handles a client sending multiple concurrent requests</li>\n<li>A transaction max_capturable amount is now limited to 4 decimal places</li>\n<li>Save checkbox broke in some scenarios toggling back and forward between cards and ACH</li>\n<li>Fixed an issue where card ending and expiry was not always displaying correctly on Paypal</li>\n</ul>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"93ad542e-253f-4b57-a38d-192dc9e19083","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"8a41ac64-8077-48f2-9429-658883c4093d","type":"text/javascript","exec":[""]}}],"_postman_id":"4cf72d74-7df1-4061-b491-26bae9a97502"}],"id":"2ed853fc-5d74-48bb-a5da-884596529e2d","_postman_id":"2ed853fc-5d74-48bb-a5da-884596529e2d","description":"","auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{session_key}}"}]},"isInherited":true,"source":{"_postman_id":"761f7378-b500-44c8-839b-304826336f93","id":"761f7378-b500-44c8-839b-304826336f93","name":"Shuttle - Legacy","type":"collection"}}}],"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"{{session_key}}"}]}},"event":[{"listen":"prerequest","script":{"id":"011a0940-7861-456b-b341-23c4344050b3","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"3a630545-2c02-4e1b-928c-383dac891fec","type":"text/javascript","exec":[""]}}]}