Skip to content
Status

Release Notes

This section lists recent platform changes — please note, not all changes are relevant to all users.

New Features

  • Stripe — merchants can now turn on Bank Transfer, including SPEI in Mexico, in their Stripe gateway settings; it’s no longer limited to beta. SPEI payments can’t be refunded through Shuttle

    Customers can pay by sending money from their own banking app, which opens up markets such as Mexico where bank transfer is a preferred way to pay.

  • Stripe — bank transfers the customer never pays are now declined and cancelled at Stripe automatically, after the number of days the merchant sets in the Stripe gateway settings (default 14)

    Unpaid orders don't sit open indefinitely or need closing by hand. A transfer that's part paid, or where the money is on its way, isn't declined: it's held for review.

  • Adyen — merchants processing through Adyen can now offer Apple Pay and Google Pay at checkout

    Customers get a faster way to pay, especially on mobile, and cards stored on their phone go through without a second bank check.

  • Voice — businesses on Telnyx can now take card and ACH payments over the phone, with callers keying in their details, using Telnyx’s <Pay> and the Shuttle Pay Connector. No Twilio account is needed

    Businesses already on Telnyx can take phone payments without adding a second carrier. Setup, scope and pricing are on the Telnyx Pay page at shuttleglobal.com.

  • Voice — your IVR can now check the outcome of a phone payment for 24 hours, by the carrier’s transaction ID or your own reference (alt_key), and gets back the payment, saved payment method and contract; Twilio replies also return the transaction ID as PayConnector_nonce

    Your IVR can confirm what actually happened before it tells the caller, even when the carrier's reply doesn't arrive, so a caller is never told a payment failed when it went through.

  • Merchant Setup — merchants can now enter their country next to their legal name on Customise Checkout, which Google Pay needs before it will show

    Setting the country once lets merchants offer Google Pay to every customer, including those who don't give a billing address.

  • Merchant Setup — now available in Russian: it opens in the language the merchant’s browser is set to, and your platform’s branding text can be set for each language

    Russian-speaking merchants can complete setup in their own language, with your platform's wording shown in that language too.


Improvements

  • USAePay — the gateway settings now show the webhook URL to add in USAePay for ACH payments, with a link to the setup instructions

    Merchants can finish ACH setup from the gateway settings alone, so bank payments update promptly when they settle or are returned.

  • USAePay — a new ACH Type (MOTO) setting chooses the authorisation type sent with bank payments that staff take for a customer who isn’t present: TEL (telephone-initiated), PPD (prearranged) or the USAePay account default

    Bank payments taken by staff, for example over the phone, are submitted the way the customer actually agreed to them, as ACH rules require.

  • Worldpay — a partial refund on a payment Worldpay hasn’t settled yet is now refused with a message saying why; issue a full refund instead, or try again once the payment has settled

    Staff know straight away why a refund can't go through yet and what to do instead.

  • Cybersource and NAB — payments that pass 3D Secure now carry the result through to the card issuer, so they qualify for liability shift, including Mastercard Identity Check payments on NAB

    When a cardholder authenticates with their bank, liability for fraud chargebacks moves to the card issuer, protecting the merchant's revenue.

  • Global Payments — when Global Payments blocks the connection by IP address, gateway setup now says so and points to the addresses to allowlist, instead of reporting invalid credentials; it also says whether the merchant ID or the account is wrong

    Merchants can see the real cause of a connection problem and fix it themselves, instead of re-entering credentials that were never the issue.

  • Authorize.Net — when an eCheck payment is refused because that eCheck type isn’t enabled on the merchant’s Authorize.Net account, the error now says so, rather than giving a message about refunds

    Staff can see straight away that the fix is a setting on the Authorize.Net account, not a problem with the customer's bank details.

  • Google Pay — customers are only offered the Google Pay cards their merchant’s payment provider can process: cards on their phone where the provider accepts network tokens, and cards saved to their Google account where it also runs 3D Secure

    Customers don't choose a card in Google Pay only to have the payment declined afterwards.

  • Checkout — when an ad blocker or browser privacy setting stops the Braintree, PayPal or Square card form loading, the customer is now told to allow the site and reload, or try another browser

    Customers who would otherwise see a card form that won't load can sort it out and complete the payment, rather than giving up.

  • Checkout — the receipt for a bank transfer or Multibanco payment the customer hasn’t paid yet now reads Payment In Progress (action required)

    Customers understand the payment isn't complete until they send the money, which means fewer unpaid orders and fewer "did my payment go through?" queries.

  • Checkout — on phones, the bank’s 3D Secure check in the embedded checkout now opens full screen, with a Cancel option that takes the customer back to the checkout

    Customers on phones can complete their bank's check comfortably, or back out and choose another way to pay.

  • Checkout — when a card is declined, the customer now sees a clear message in their own language instead of the processor’s raw response, and the checkout monitor reports each decline as it happens

    Customers understand what went wrong and are more likely to try again or use another card, and platforms watching the checkout can respond to declines in real time.

  • Transactions — new sub_status and sub_status_reason fields on transactions and payments show when a pending payment is waiting on the customer, for example CUSTOMER_ACTION_REQUIRED while a bank transfer or Multibanco voucher is unpaid

    Platforms can tell a payment the bank is still processing from one waiting on the customer, so they can prompt the right customers to pay.

  • Automatic retries — a payment that leaves part of the balance unpaid no longer resets retry_count or retry_complete on a contract; they reset only once nothing is left due

    When a customer pays only part of what they owe, automatic retries don't start over against them: retries that had run out stay stopped, and the next scheduled payment collects everything still owed.

  • Contracts — contracts returned by the API now include their type

    Integrations can tell what kind of contract they're handling, such as a one-off payment or a payment plan, straight from the response instead of working it out from other fields.

  • Merchant View — Edit Schedule now stops staff changing or removing charges that are paid, cancelled, failed or still processing, keeps removed instalments out of the schedule and its total, won’t save a schedule that totals zero, and shows why a save was refused

    Staff can amend a payment plan knowing that what they see is what will be collected, and know exactly what to correct if a change isn't accepted.

  • Merchant View — payment plans with a single scheduled charge now offer Edit Schedule and show their audit history, a contract replaced by an amendment no longer offers Suspend, Resume, Terminate or Edit, and Schedule now on a charge makes it due straight away

    Staff always act on the current version of a contract, and every payment plan keeps its full editing and history tools however many charges it has.

  • Merchant View — a contract’s Arrears now shows the amount overdue today rather than the whole remaining balance, its statement total leaves out cancelled instalments, and declined refunds are labelled Refund attempt

    Staff can quote customers the right amount owed today, and the statement matches what the customer was actually invoiced.

  • Merchant View — the audit history now has a copy button for the record’s ID, and copying a status update entry includes its full details

    Staff can paste an exact record or event into a note or support request in one step.

  • Merchant View — when Suspend, Resume or Terminate can’t be applied to a contract, staff now see the reason, and Resume explains that any overdue amount is collected with the next charge

    Staff know why an action didn't apply, and can tell the customer upfront what they'll be charged when their plan restarts.

  • Merchant View — a saved payment method held by an archived or inactive processor now shows as UNAVAILABLE, because it can’t be charged, and the processor shows a badge saying it’s retired or inactive

    Staff can see at a glance which customers need to give a new payment method before their next payment is due.

  • Merchant View — failing, failed and expired payment methods can now be archived, not just active ones

    Staff can tidy away payment methods that won't be charged again, keeping the customer's record clear.

  • Merchant View — options you set in the Developer Portal or in a deep link’s context.features now always take effect, and staff can amend a contract in place unless you turn that option off

    Merchant View behaves as you configured it whichever spelling your integration uses, and staff keep the choice to update a contract in place unless you deliberately take it away.

  • Merchant View — staff who open Merchant View from a deep link with the Support role can now service customers, including refunds and taking payments; the Support (read-only) role is view only

    Platforms can give support staff what they need to resolve a customer's issue from a deep link, and keep a view-only role for staff who shouldn't move money.

  • Merchant View — users who can view but not edit branding can now open Localisation to read customer-facing wording; editing, importing and reverting it needs edit permission

    Team members can check customer-facing wording without being able to change it.

  • Merchant Setup — archived and inactive processors now appear under Show archived, with the reason they were retired, and can be restored from there

    Merchants can see which processors were retired and why, and bring one back without setting it up again.

  • Developer Portal — the Support and Support (read-only) teams set up for each division can now view contracts, transactions, gateways and branding, and Support can also service contracts and transactions

    New divisions get support teams that can help customers from day one, without an admin granting permissions by hand.

  • Developer Portal — accepting a team invite now signs you straight in, and someone invited before they’ve been given access sees a holding page instead of an error

    New team members get into the portal in one step, and admins are only offered roles that make sense for the division.

  • Voice — platforms can now connect the Pay Connector with their application key and name the merchant in an instance_key parameter, so one connector serves all their merchants

    Platforms can set up and maintain a single Pay Connector for all their merchants instead of one per merchant.

  • Voice demo app — now works with Telnyx as well as Twilio, and gives callers more time to key in card details (30 seconds and 3 attempts by default)

    Teams on Telnyx can try phone payments end to end before building their own IVR.


Bug Fixes

Gateways:

  • Adyen — fixed captures and refunds staying pending in Shuttle when Adyen was connected with an API key scoped to a single merchant account. Those keys now work, and the connection check warns if Shuttle can’t receive Adyen’s updates

    Captures and refunds show as completed in Shuttle without anyone checking Adyen.

  • Apple Pay / Google Pay — fixed a wallet not showing at checkout when only one of the merchant’s payment providers supports it. Payment method rules, such as amount limits, now also apply to Apple Pay and Google Pay

    Customers see every wallet the merchant has set up. If a merchant's rule excludes a payment method, its Apple Pay and Google Pay versions are now hidden too.

  • Google Pay — fixed payments failing when Google Pay sent a single-digit expiry month (such as 3 instead of 03), which some payment providers reject. Click to Pay had the same fix

    Customers whose cards expire between January and September can pay with Google Pay again on those providers.

  • Authorize.Net — fixed payments held for fraud review staying pending after they were approved or declined in Authorize.Net. Holds that expire or are voided now show as declined, with the reason

    Held orders move to paid or declined on their own, without staff checking Authorize.Net.

  • Checkout.com — fixed authorisations (to capture later) staying abandoned when the customer passed 3D Secure but didn’t return from their bank’s page

    Those authorisations are ready to capture, so the order isn't lost.

  • Cybersource — fixed payments that fail the address or security code check, or are referred, failing without a reason or staying unresolved. They now show as declined, with Cybersource’s reason

    Staff, customers and callers see why a card was refused and can correct it.

  • PayU — fixed payments that failed 3D Secure not showing as declined. They now show as declined with PayU’s reason, and the PayU order is cancelled

    Merchants can trust the payment status before they fulfil an order.

  • QuickBooks Payments — fixed payments on some saved bank accounts being declined with a misleading “phone is invalid” message. The decline now asks the customer to re-enter their bank details, which replaces the saved account

    Customers can sort it out themselves, and staff aren't sent chasing a phone number.

  • USAePay — fixed ACH payments showing as declined while the bank was still processing them. They now stay pending until they settle or are returned

    Staff don't chase customers for payments that are still on their way.

General:

  • Checkout — fixed checkouts for a particular legal_entity offering payment methods set up only for the merchant’s other legal entities

    Each payment goes through the right entity's payment providers. If a payment method no longer appears on a checkout, route it for that checkout's legal entity.

  • Checkout — fixed payments being rejected when the integration sent an amount with rounding noise, such as 393.9999999999998 for 394.00

    Customers aren't turned away over a difference smaller than a cent.

  • Payments — fixed capture and void by alt_key failing with Duplicate alt_key when an earlier attempt with the same alt_key had been declined or abandoned. They now act on the latest open authorisation

    You can capture or void by your own reference after a customer retries a payment.

  • Payment Methods — fixed sub_status and sub_status_reason being ignored when updating a payment method. Setting a failed method back to ACTIVE now raises PAYMENT_METHOD.ACTIVE

    Your systems get the right event when a payment method comes back into use.

  • Developer Portal — fixed CSV import and export, search and switching languages on the Localisation screen. A malformed CSV is now refused instead of partly imported

    Teams can manage translated wording in bulk, knowing an import applies in full or not at all.


New Features

  • USAePay — merchants can now take ACH bank payments in USD, and refund them, by turning on the new Enable ACH / Bank Transfer setting

    Merchants on USAePay can take bank payments alongside cards through the same gateway, without adding another processor.

  • Transactions — new target_date shows the date a bank debit such as SEPA, BACS or ACH is due to leave the customer’s account when it’s submitted ahead of that date; Merchant View shows it alongside the created and resolved dates

    You can see when money is due to leave the customer's account, not just when the payment was submitted, which makes reconciliation and customer queries easier.

  • Merchant View — a new Undo Refund action reverses a refund that was recorded as paid back outside Shuttle; no money moves

    If a refund made outside Shuttle is recorded by mistake, staff can correct it themselves, and the payment can be refunded again later.


Improvements

  • Stripe — a new Send Stripe receipt setting, off by default, has Stripe email its own payment receipt to the customer when an email address is known

    Merchants who want customers to get Stripe's receipt can have it sent automatically, with no extra integration work.

  • Stripe — when the customer fails their bank’s 3D Secure check, they now see a clear message in their own language instead of Stripe’s technical one

    Customers understand why the payment didn't go through and can try again or use another card.

  • Checkout.com — captures and refunds made in the Checkout.com dashboard now show against the original payment in Shuttle

    Staff can work in either system and Shuttle stays an accurate record for reconciliation and reporting.

  • Cybersource — customers can now pay with Google Pay on desktop and on browsers other than Android, using cards saved to their Google account, with a 3D Secure check

    Customers can use Google Pay whatever device or browser they're on.

  • Global Payments — a customer who fails their bank’s 3D Secure check now returns to the checkout with a decline instead of an error, and payments where the bank recorded a 3D Secure attempt now go on to the card issuer for approval

    Customers who fail the check can simply try another card, and fewer payments are turned away before the card issuer has a chance to approve them.

  • Transbank — debit (Redcompra) and prepaid payments can now be refunded after the day they were taken

    Merchants can refund debit and prepaid customers whenever they need to, not only on the day of purchase.

  • Trust Payments — a new Enable statement descriptor setting puts the payment description on the cardholder’s bank statement (needs a Trust Payments acquiring account)

    Customers recognise the charge on their statement, which helps avoid queries and disputes over unfamiliar payments.

  • Trust Payments — each payment’s alt_key, your own reference, is now sent to Trust Payments, so you can find and match transactions in the Trust Payments portal

    Finance teams can match each payment in the Trust Payments portal to their own reference, which speeds up reconciliation.

  • Accounts — a timezone set when creating or updating an account is now saved and returned

    You can store each customer's time zone in Shuttle and read it back, keeping it in step with your own records.

  • Instances — a new merchant_country field, set when updating an instance, tells Google Pay and Click to Pay the merchant’s country, so Google Pay works even when the customer gives no billing country

    Merchants whose customers don't give an address can still offer Google Pay.

  • Charges — listing the charges on a contract with many charges is now faster

    Integrations and screens that show payment schedules load more quickly, especially for long-running plans.

  • Charges — recurring is now true for charges on ongoing scheduled contracts, and on one-off contracts initiated now shows when the customer paid rather than the charge date

    Reports built on charges classify recurring payments correctly and show when one-off payments were actually made.

  • Contracts — keep_active_until can now be cleared by sending an empty string when editing or resuming a contract

    You can remove an extension date you no longer need without recreating the contract.

  • Contracts — when an ACH payment on a recurring contract is declined after a time pending, the contract now moves to FAILING and is retried on the retry schedule

    Late ACH returns are picked up and retried automatically, so arrears are collected without staff stepping in.

  • Checkout — when a customer saves a new payment method on a contract with an amount outstanding, they’re now told the amount will be taken straight away and future payments will use the new method

    Customers know exactly what will be charged when they update their details, so there are no surprises on their statement.

  • Payment Links — links now accept the default_save_card and hide_save_card_toggle options, which leave the save-card choice unticked or hide it while keeping payment methods that need a saved mandate, such as GoCardless, on offer (save_card: false removes them)

    Merchants can avoid saving cards customers didn't mean to keep on file, while still offering payment methods such as direct debit that need a saved mandate.


Bug Fixes

Gateways:

  • Authorize.Net — fixed payments that a Kount fraud check held and then approved being recorded as failed. They now record as paid

    Merchants can see these orders are paid and fulfil them, and their systems receive a paid event.

  • Braintree — fixed card payments failing when the customer clicked Pay before the card fields had finished loading

    Customers who click Pay quickly now go straight through.

  • Braintree — fixed card payments failing with Could not initialise payment option on payment links served from the merchant’s own domain

    Merchants can use their own branded domain for payment links and still take Braintree card payments.

  • CardConnect — fixed repeat and recurring payments being declined on saved ACH bank accounts, because the account holder’s name wasn’t kept

    Merchants can collect repeat bank payments from saved accounts without customers re-entering their details.

  • Checkout.com — fixed some payments with auto-capture after 3D Secure being recorded incorrectly when the customer’s return from their bank and Checkout.com’s confirmation arrived at the same time. They now record as captured

    Payment records match what Checkout.com settled, which keeps reconciliation straightforward.

  • GoCardless — fixed some payments staying pending after GoCardless had collected them

    Staff can see what has been collected without checking GoCardless.

  • GoCardless — fixed Instant Bank Pay failing on checkouts that also take cards through another payment provider, such as Braintree

    Merchants can offer Instant Bank Pay alongside cards from a different provider on the same checkout.

  • Google Pay — fixed the Pay button staying greyed out when Google Pay asked for the card’s security code on checkouts that also collect name, address, email or phone

    Customers can complete Google Pay payments on those checkouts.

  • Square — fixed payments without a description being rejected by Square when order creation is turned on

    Merchants can use Square order creation without adding a description to every payment.

  • Stripe — fixed ACH and SEPA refunds, including ones issued in the Stripe dashboard, staying declined in Shuttle after Stripe completed them

    Refunds in Shuttle match Stripe, wherever they were issued.

  • Stripe — fixed bank transfer and Multibanco payments being declined when the customer’s existing Stripe cash balance already covered them. They now record as paid

    Customers who already hold funds with the merchant see their order confirmed straight away.

  • Worldpay — fixed full refunds staying pending when issued before the payment had settled. Worldpay now cancels the payment instead

    Staff can refund a customer in full at any time, without waiting for settlement.

General:

  • Automatic retries — fixed contracts that had used all their retries being retried again, and contracts being retried on a payment provider that had been archived. retry_complete now stays true until a payment succeeds, and each later instalment gets one attempt

    Failed instalments are only retried as the documented rules allow, which keeps within card scheme limits.

  • Automatic retries — fixed retries on scheduled-charges contracts not following the retry schedule after a decline. They now happen on the scheduled date, and next_payment shows it

    Retries on instalment plans are spaced as documented, giving each attempt a better chance of collecting.

  • Charges — fixed saving a charge back unchanged (same amount and due) moving the contract’s next_payment back to that charge’s due date

    Integrations that read and save a charge don't move the customer's next payment date.

  • Contracts — fixed completed showing the date a contract was last updated (for example by a refund) instead of the date it finished. It’s now set when a contract finishes, including cancelled and failed ones, and empty where that date isn’t known

    Reports on when contracts ended are accurate.

  • Contracts — fixed a cancelled contract restarting when it was sent only a new next_charge. Reactivating it now needs resume: true with the next_charge

    Billing a customer has cancelled can't restart by accident.

  • Contracts — fixed a keep_active_until sent with an edit that replaces the contract (such as an amount change) being ignored, with the old date carried over

    An extension date set while amending a contract takes effect.

  • Transactions — fixed BACS, SEPA and ACH payments that were still being collected showing a resolved time. resolved is now set only when a payment succeeds or fails

    `resolved` tells you when a payment has really completed or failed.

  • Checkout — fixed an edited routing rule’s old version still affecting which payment methods checkout offered

    Checkout offers exactly the payment methods the merchant's current rules allow.

  • Checkout — fixed routing rules, such as amount limits, not applying to hosted payment buttons like GoCardless and hosted ACH. They’re now also re-checked when the customer changes the amount

    Customers are only offered the payment methods the merchant allows for that payment.

  • Payment Links — fixed a link that stopped taking payments, while still showing ACTIVE, after a payment attempt was blocked before reaching the payment provider (for example by a routing rule)

    Customers can try again on the same link, so merchants don't need to send a new one.

  • Payment Links — fixed the save_card: false, force_add and timezone options being ignored at checkout

    Payment links behave at checkout as they were set up.

  • Payment Links — fixed links with the TOKENISE action and no amount asking the customer for an amount and refusing 0. They now go straight to saving the payment method

    Merchants can send a link purely to collect payment details for later billing.

  • Customised branding — fixed the previous logo still showing on customer-facing pages after a new one was uploaded

    Brand updates show as soon as they're saved.

  • Deep links — fixed records opened by your own reference (alt_key) showing only their header, without transactions, contracts or saved cards, and links without an expand staying on the loading screen in the beta Merchant View

    Staff arriving from your platform see the full customer record.

  • Deep links — fixed menu: banner not showing the banner menu, and mode not applying the same way to the menu and the page

    Merchant View embedded in your platform looks and behaves as configured.

  • Deep links — fixed merchant and customer deep links ignoring version, including the application or instance default, so they always opened the standard Merchant View

    Platforms can try the beta Merchant View from any type of deep link.

  • Voice demo app — fixed ACH payments from the demo app being rejected by the Pay Connector because the bank account type wasn’t sent

    Teams can test bank payments by phone end to end before going live.


New Features

  • Contracts — added keep_active_until, an optional date that keeps a contract active past its final scheduled payment so mid-term amendments can still be applied

New Features

  • Xendit — new gateway integration available for merchants in supported regions
  • FatZebra — new gateway integration
  • AndDone — new integration
  • Scheduled Charges — schedule customised multi-instalment payments with configurable amounts and dates per instalment
  • Payment Links API — new POST /payment_links endpoint for programmatic creation of links

Improvements

  • Cybersource — automatic resolution of pending transactions; AVS mode selector and expanded metadata field mapping
  • Stripe — SEPA now supports target date scheduling and pending-until-settled status, keeping transactions in pending until the bank settles (matching the ACH behaviour)
  • Authorize.Net — CCD now available as a configurable ACH eCheck type (alongside PPD and WEB)
  • Interprose — payment plans now supported via schedule metadata
  • Apple Pay / Google Pay — temporary cards now work in sandbox gateway for end-to-end wallet testing
  • shuttle.js — 1.4.6 - embedded checkout now propagates allow=payment permission to sub-iframes via wildcard, unblocking nested embed scenarios
  • Password reset — session now remains authenticated immediately after reset

Bug Fixes

Gateways:

  • Stripe — ACH delayed failures now process correctly; transactions no longer remain locked in SUCCESS
  • PayPal — onboarding endpoint restored
  • QuickBooks Payments — ValidationFault resolved; delete-card error fixed; ACH now supported on CAD-only accounts; raw card details used in place of cardOnFile where available to improve authorization rates; fixed boltUtilsContext error in processPaymentMade
  • GoCardless — gateway message no longer cleared after an automatic retry; fixed IBP payments being routed to Stripe when multiple gateways are configured
  • Authorize.Net — ACH nameOnAccount no longer incorrectly populated with the account number
  • Authorize.Net — token expiry no longer causes a 20-second outage on the payment processor
  • Checkout.com — refunds outside the 1-year window now return a clear, user-friendly error instead of a generic failure
  • TrustPayments — fixed null-dereference in capture() when the transaction is not yet indexed
  • Sandbox gateway — pending tokenise handling fixed
  • Recurring token payments — now correctly respect the gateway ARCHIVE status and are blocked on archived gateways
  • update_transaction webhook — now correctly includes gateway_status in the payload
  • Generic — fixed token-delete error affecting multiple gateways

Platform & reliability:

  • Reporting — format-csv formatter now tolerates ipstack 500s during IP country lookup
  • Customised branding logo — Save button no longer disabled on some domain names
  • Gift Aid — claim items now include account data when created without an active claim
  • Apple Pay — well-known verification now checks both with and without the .txt extension for broader server compatibility

New Features


Improvements

  • GoCardless - Enhanced decline event tracking with detailed reason codes for better reconciliation
  • GoCardless - Improved refund metadata for clearer transaction history
  • GoCardless - Fixed language parameter handling for international customers
  • Stripe - Added support for extended card authorization (7 → 30 days)
  • Stripe - Improved settlement tracking for auth+capture transactions with currency and fee data
  • Authorize.net - Added connect via API Keys (rather than login)
  • NMI - Now supports passing cardholder name
  • Checkout - Updated security headers and CSP context for new / updated gateways

Bug Fixes

  • Various bug fixes and performance improvements

Was this page helpful?