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 a 400 "Invalid or malformed JSON was provided" if they carried a Content-Type: application/json header. 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_verification webhook as verified-manually or rejected-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-required can now fire. Check Geolocation is unchanged and still returns a 400 for 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-manually on the kyc_verification webhook for a customer you were previously sent rejected for, and that customer can then make payments and payouts that need KYC. Handle it as you would verified.
  • Fixed: The kyc_verification webhook 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: false for an IP in a country that no location rule covers, including when you have no location rules set up. Previously it returned allowed: true. An IP that resolves to a country but not to a state, in a country where your rules restrict states, returns allowed: false with the reason location_unconfirmed. An IP that Vivamo can't look up at all still returns a 400.
  • New fields: Check Geolocation responses now include reason, flags and checkId. You can also pass an optional externalCustomerId to 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-denied fires when the SDK refuses a customer because of their location, and location-required fires when it needs the customer to share their device location. Only location-denied can fire today; location-required is 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-review on the kyc_verification webhook, 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_verification webhook, as verified-manually or rejected-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-review results on the kyc_verification webhook now include a reason.
  • 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 expired intent status instead of stamping failed over it once the two-hour intent window closes. A new expired value means the window closed with nothing attempted, so failed now means the payment attempt failed. The disbursement status list in the API reference now also documents voided and refunded, which were always possible, and the response omits the disbursement object entirely when no payout exists.
  • ⚠️ Possible breaking change: The SDK no longer accepts a full stylesheet replacement through the customCss constructor 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} and GET /v1/customers/kyc-for-review are withdrawn: both paths return 410 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_verification webhook with status: "verified-manually" or "rejected-manually", so you learn the outcome without polling. Handle these the same way you handle verified and rejected. 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-data status with a missingCustomerDataFields list, and the SDK collects those fields before moving on to the W-9. The Create Disbursement Intent response documents the requiresCustomerData, missingCustomerDataFields, and w9CaptureUrl fields. 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. middleName is now a documented, updatable customer field.
  • W-9 webhooks now include a status field: The customer_w9_required and customer_w9_completed webhooks now carry a status field ("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 a 400. 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-index values.

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 fires status: "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. The verifyAfterCreation flag on Create Customer is deprecated.

March 2026

  • Check customer location endpoint - A new POST /v1/operators/check-geolocation endpoint 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}/prizes endpoint 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 400 error.
  • 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 pending to verified or under_review).
  • Customer creation hardening — Improved handling of shared externalCustomerId and 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 verifyAfterCreation flag.
  • 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