Support
/Release Notes
Recent changes and updates to the Vivamo platform
Release Notes
October 2026
2026-10-23
- Fixed: A minor bug preventing the use of a card or bank account just entered, for both payments and payouts.
- Fixed: Improved location detection and handling to reduce the number of false rejections.
- Fixed: The card security code (CVV) field in the SDK now accepts only three or four digits, and phones show a number keypad for it. Letters or spaces typed into it used to be saved with the card, and the payment was then refused. A card saved that way will keep being refused until the customer adds it again.
- UI change: When a card is refused because it can't be used for this payment or payout, the SDK won't let the customer submit it again until they change the card details.
- Fixed: API requests with no body, such as a
GET, were rejected with a400"Invalid or malformed JSON was provided" if they carried aContent-Type: application/jsonheader. Some HTTP clients add that header to every request. These requests now reach the endpoint as normal. - Fixed: Receipt emails now show the date of the payment or payout. That row used to be blank. Receipts and payout status emails show the date in the customer's time zone when we know it, and in US Eastern time when we don't, with the time zone always named. Payout status emails used to show UTC.
2026-10-19
- New in Vivamo Hub: A reviewer can now escalate a KYC verification that is under review to the Vivamo Compliance team instead of approving or rejecting it. Until Vivamo decides, the customer shows as escalated in Hub and no operator can approve or reject their verification there. The verification stays under review until then, and Vivamo's decision reaches you on the
kyc_verificationwebhook asverified-manuallyorrejected-manually. - UI change: Approving or rejecting a KYC verification in Vivamo Hub now requires a comment from the reviewer. Hub shows the comment and when the decision was made on the customer's page. Only your own reviewers see the comments they write; other operators connected to the same customer see the decision but not the comment.
- Fixed: Approving or rejecting a KYC verification in Vivamo Hub could time out for customers with ID documents on file, and the decision was not saved.
- Performance: The SDK's identity verification status checks, and the KYC check made before a payment or payout, now respond faster for customers who have made several verification attempts.
2026-10-14
- Fixed: After the 2026-10-09 release, customers connecting over IPv6, which many US mobile carriers use, were refused with "We couldn't confirm your location". Their location is looked up correctly again.
- Behaviour change: If Vivamo can't look up a customer's IP address, the SDK now falls back to other methods to establish their location instead of refusing them. It may ask the customer to share their location, so
location-requiredcan now fire. Check Geolocation is unchanged and still returns a400for an IP it can't resolve. - Behaviour change: The Vivamo Compliance team can now overturn an automatic KYC rejection. When they do, you receive
verified-manuallyon thekyc_verificationwebhook for a customer you were previously sentrejectedfor, and that customer can then make payments and payouts that need KYC. Handle it as you wouldverified. - Fixed: The
kyc_verificationwebhook for a completed identity check sometimes didn't go out when our screening of the customer ran slowly. - UI change: In Vivamo Hub, a rejected identity verification now explains why it was rejected.
2026-10-09
- Behaviour change: Location rules set up for your account can now only narrow where customers may use Vivamo, never widen it. A customer in a country or state that Vivamo's platform-wide rules don't allow is now refused, even if your own rules allow them. A country with no platform-wide rule is blocked.
- Behaviour change: Check Geolocation now returns
allowed: falsefor an IP in a country that no location rule covers, including when you have no location rules set up. Previously it returnedallowed: true. An IP that resolves to a country but not to a state, in a country where your rules restrict states, returnsallowed: falsewith the reasonlocation_unconfirmed. An IP that Vivamo can't look up at all still returns a400. - New fields: Check Geolocation responses now include
reason,flagsandcheckId. You can also pass an optionalexternalCustomerIdto record the check against a customer. - UI change: A customer whose location isn't permitted now sees a message in the SDK saying the service isn't available where they are, instead of a general error.
- New SDK events:
location-deniedfires when the SDK refuses a customer because of their location, andlocation-requiredfires when it needs the customer to share their device location. Onlylocation-deniedcan fire today;location-requiredis there for future location checks.
2026-10-03
- Behaviour change: Some verifications are now held for review by the Vivamo Compliance team even when the identity check passes. You receive
under-reviewon thekyc_verificationwebhook, and the customer can't make payments or payouts that need KYC until a decision is made. Vivamo Hub shows these as being reviewed by Vivamo and doesn't let you decide them. - Behaviour change: The Vivamo Compliance team can now approve or reject verifications that are under review. Their decision reaches you on the same
kyc_verificationwebhook, asverified-manuallyorrejected-manually, just as if it had been made in Vivamo Hub. - Behaviour change: A document verification that our verification provider returns without a clear outcome is now held for review instead of being verified automatically.
- New field:
under-reviewresults on thekyc_verificationwebhook now include areason. - UI change: In Vivamo Hub, a customer's Created date is now the date they connected to you, not the date they first signed up with Vivamo. The customer list is sorted by this date, newest first, so customers who joined Vivamo through another operator may move in the list.
September 2026
2026-09-28
- Fixed: On desktop, the QR code a customer scans to continue identity verification on their phone now stays valid for 24 hours. Before, scanning it more than an hour after it appeared opened an expired page.
- Behaviour change: Customer transaction counts and totals in Vivamo Hub now include only completed transactions, so some customers will show lower figures than before. First and last transaction dates now refer to completed transactions too.
- Performance: The card and bank forms load faster. The SDK starts preparing them as soon as the customer opens the list of payment methods.
- UI change: While the widget loads, its message now says what it is preparing: the verification, the payment or the payout. The payment security badge no longer appears during identity verification.
- UI change: Your logo is shown larger on the over-the-counter payment screen.
- New: The SDK now reports how customers move through each flow, so we can see where they get stuck. The events carry no personal details and go to the same Vivamo address the SDK already calls, so your content security policy needs no change.
2026-09-17
- Bug-fix: Get Payment Intent Status and Get Disbursement Intent Status now report the correct
expiredintent status instead of stampingfailedover it once the two-hour intent window closes. A newexpiredvalue means the window closed with nothing attempted, sofailednow means the payment attempt failed. The disbursement status list in the API reference now also documentsvoidedandrefunded, which were always possible, and the response omits thedisbursementobject entirely when no payout exists. - ⚠️ Possible breaking change: The SDK no longer accepts a full stylesheet replacement through the
customCssconstructor option. If you pass your own CSS when you create the widget, it is now ignored and you get Vivamo's redesigned default styling instead. - UI/UX change: The customer payment widget has been rebuilt around saved payment methods and to reduce the number of steps to go through Vivamo flows.
- UI change: Phone number fields now have a country dial-code selector. A ten-digit number was previously assumed to be US and prefixed with
+1.
2026-09-02
- Fixed: A bank account that failed to save was sometimes still listed as added, and a failed submission could leave the Submit button stuck with no message. The bank and card forms now show the error where the customer can see it, and let them correct their details and try again.
- Performance: Get Customer KYC Info is much faster to respond, most noticeably for customers who have made several verification attempts.
- New: Payments and disbursements can now be exported in full from Vivamo Hub. An export pages through the whole history rather than returning one page of results.
August 2026
2026-08-26
- ⚠️ Possible breaking change: Manual KYC review can no longer be performed through the API.
POST /v1/customers/{externalCustomerId}/kyc-verify/{type}andGET /v1/customers/kyc-for-revieware withdrawn: both paths return410 Gone. The endpoints will be removed entirely after a short grace period. Manual review is now completed in Vivamo Hub instead. - New webhooks: A manual decision now arrives as a
kyc_verificationwebhook withstatus: "verified-manually"or"rejected-manually", so you learn the outcome without polling. Handle these the same way you handleverifiedandrejected. See Webhooks → Customer KYC verification status change. - UI change: The card payment method is labelled "Card" for both purchases and payouts, and card images appear correctly when only debit cards are supported.
- Fixed: Improved handling of Debit cards and whether configured payment processors will accept them. The SDK now shows a more helpful error message when a debit card is rejected by the processor.
- Fixed: Some customers adding a mobile number during verification were not receiving an SMS code.
- UI/UX change: Improved the KYC completion page, it now suggests the customer should close the window. Future improvements will indicate the verification result and any further actions required.
- Bug-fix: Fixed an issue where some customers accepting terms and conditions would fail.
2026-08-06
Mostly W-9 and identity verification work, all handled by the Vivamo SDK flows.
- Behaviour change: Disbursements that cross a tax threshold now require a verified identity document before the W-9 is collected. The SDK adds the extra step to the flow on its own.
- Behaviour change: The W-9 form now opens in a separate browser window rather than an inline frame. The SDK handles a blocked popup by telling the customer and offering a button to reopen it, but it is worth making sure popups are permitted on the page hosting the widget.
- New: Wording on the W-9 waiting and identity verification screens can be customised. Ask us if you want your own copy in place of the defaults.
July 2026
- Disbursement intents collect missing tax details before the W-9: When a payout needs a W-9 but the customer's legal name or address isn't on file, the intent now returns a
requires-customer-datastatus with amissingCustomerDataFieldslist, and the SDK collects those fields before moving on to the W-9. TheCreate Disbursement Intentresponse documents therequiresCustomerData,missingCustomerDataFields, andw9CaptureUrlfields. You can skip this step entirely by sending the customer's name and address when you create or update them. See Personal Tax → When tax details are missing. - SDK forms pre-fill known customer details: The billing, KYC, and tax-data forms now pre-populate any name/address fields Vivamo already holds, so customers only enter what's missing.
middleNameis now a documented, updatable customer field. - W-9 webhooks now include a
statusfield: Thecustomer_w9_requiredandcustomer_w9_completedwebhooks now carry astatusfield ("pending"and"completed"respectively), matching the envelope used by transaction and KYC webhooks. This is additive; existing fields are unchanged. See Webhooks → Customer W-9 tax compliance. - Extended support for different tax models: Support was improved for operators with different tax models. The SDK now better handles W-9 collection. See Tax compliance for details.
June 2026
2026-06-24
- Behaviour change: Phone numbers are now normalised to international format (E.164, e.g.
+14155551234) wherever a customer provides one, both during identity verification and when capturing customer details. A number that can't be normalised to a valid international number is rejected with a400. The SDK now validates this inline before it submits, so SDK-driven flows need no change. If your integration sends phone numbers to the API directly, send them in international format. Unformatted numbers that were previously accepted may now be rejected. - New New payment method types are being introduced to the platform. This is additive and rolls out per operator, so nothing in your current integration changes until a new method is enabled for you. As these roll out, payment and disbursement status responses (and their webhooks) may include status and decline-reason values you haven't seen before, so make sure your status handling tolerates values it doesn't recognise.
- SDK modals now render above page content — The SDK's modals and pop-ups now use the maximum stacking order, so they always appear above your site's content even when your own elements use very high
z-indexvalues.
May 2026
- Disbursement approval and rejection webhooks — Operators now receive a webhook when they approve or reject a disbursement via Proceed With Disbursement. Approval fires
status: "approved"and rejection firesstatus: "rejected", completing the disbursement webhook lifecycle alongside the existing creation, success, failed, and declined events. See Webhooks → Disbursements for the full lifecycle and updated payload examples.
April 2026
- KYC moved into the SDK — Identity verification now runs inside the Vivamo SDK. Call Get Customer KYC Info to get a client secret, pass it to the new
vivamo.createKycElements()method, and the widget handles the full KYC flow. If you'd rather not wire any of this up yourself, the SDK will trigger verification on a customer's first payment or disbursement. TheverifyAfterCreationflag on Create Customer is deprecated.
March 2026
- Check customer location endpoint - A new
POST /v1/operators/check-geolocationendpoint returns whether a customer's IP address is in an allowed location for your operator. Use it to apply location restrictions before the customer reaches the Vivamo SDK flows. - SDK W-9 tax form flow — The SDK now automatically handles W-9 collection during disbursements. When a customer triggers the W-9 requirement, the SDK shows the W-9 form and resumes the disbursement flow after submission.
- Disbursement approval blocked until W-9 complete — The proceed-with-disbursement endpoint now returns a 400 error if the customer has not completed their W-9.
- W-2G prize recording — Operators with bingo or horse racing tax types can now record qualifying prizes via
POST /v1/customers/{externalCustomerId}/prizes. Prizes are validated against IRS filing thresholds ($1,200 for bingo, $600 + 300x wager for horse racing) and automatically trigger W-9 collection when needed. - Prize record retrieval — A new
GET /v1/customers/{externalCustomerId}/prizesendpoint returns a customer's prize records, filtered by tax year (defaults to the current year). - SDK Restyling - Some visual updates to the SDK including new button styles, improved error message formatting, and better spacing for a cleaner look.
February 2026
- Improved API documentation - (You are here!) Updated code samples and added more detailed explanations for all API endpoints, including new error codes and troubleshooting tips. Added support for LLMs and AI.
- Disposable email blocking — Customer creation and updates now reject email addresses from known disposable or temporary email providers (e.g. Mailinator, Guerrilla Mail, YOPmail). Requests using a disposable email domain return a
400error. - Plus suffix email blocking — Email addresses containing
+characters in the local part (e.g.user+test@example.com) are no longer accepted during customer creation or updates. This prevents the creation of duplicate accounts via email aliasing.
January 2026
- Customer KYC status change webhook — Vivamo now sends a webhook to your registered URL whenever a customer's KYC verification status changes (e.g. from
pendingtoverifiedorunder_review). - Customer creation hardening — Improved handling of shared
externalCustomerIdand email values. Duplicate detection is now more robust across operators. - Payment descriptor support — Operators can now configure a payment descriptor that appears on the customer's bank or card statement. The SDK displays the descriptor during the payment flow.
December 2025
- Publishable key authentication — Fixed an issue with publishable keys (
pk_...). - 1099 reporting threshold increased — The disbursement threshold for collecting 1099 tax information has been raised from $600 to $2,000, per IRS publication.
November 2025
- Pay By Bank (Aeropay) integration — Added Aeropay as a pay-by-bank processor for instant ACH payments and disbursements. Customers can link their bank accounts through the Aeropay widget and use them for future transactions.
- SMS verification is now a standalone step, separated from the payment and disbursement flows for a cleaner customer experience.
- Improved error detail messages in the SDK for more actionable feedback when transactions fail.
October 2025
- Added surcharge support with a full fee breakdown displayed in the SDK before the customer confirms a transaction.
- SDK now displays base amount, processing fees, sales tax, and total separately when surcharges apply.
- Card type detection for stored payment methods (Visa, Mastercard, etc.).
September 2025
- Improved sales tax location handling for more accurate tax calculations.
- Fixed webhook signature generation for outbound webhooks where the amount field format was inconsistent.
August 2025
- Switched to a new KYC verification provider for improved identity verification reliability.
- Verification links now return separate URLs for driver's license and passport verification.
- Added sales tax calculation support, automatically applied based on the customer's location when enabled.
- Simplified KYC completion checks in the SDK flow.
July 2025
- Introduced sales tax as an optional feature for payment transactions.
- Added Luhn validation on credit card entry in the SDK for immediate feedback on invalid card numbers.
- Added 1099 tax information collection for disbursements exceeding the $600 annual threshold.
- SDK UX improvements when only one transaction type is available.
June 2025
- Added the ability to initiate KYC verification during customer creation using the
verifyAfterCreationflag. - Customer profile information is now included in the pending disbursement list response.
- Added a Get Customer Disbursements endpoint.
- Geolocation enforcement — transactions can now be restricted by the customer's location.
- Frontend SDK refactored to a modular architecture for faster load times and improved performance.
- Fixed an issue with one-off (non-stored) card payments.
May 2025
- Platform rebranded from RubyPay to Vivamo, including new API domains and SDK assets.
- Added geolocation-based authorization for restricting transactions by region.
- Introduced value-based processor orchestration for smarter transaction routing based on amount thresholds.
- Fixed SDK styling in dark mode.
March 2025
- Launched Pay By Bank (ACH Instant) as a new payment method for both payments and disbursements.
- Added payment status cooldown to prevent duplicate status polling.
- Improved payment failure handling — failed status can no longer be overridden by stale responses.
- SDK now displays success and failure icons on transaction completion.
Built with