Extensions issueshttps://lab.civicrm.org/groups/extensions/-/issues2024-03-28T21:26:04Zhttps://lab.civicrm.org/extensions/stripe/-/issues/474What does the Stripe security requirements 'change' mean2024-03-28T21:26:04ZeileenWhat does the Stripe security requirements 'change' mean
Josh got this email from Stripe - what does it mean for us?
=================================================================================
Thanks again for taking the time to meet with us and discuss the CiviCRM plugin and ways tha...
Josh got this email from Stripe - what does it mean for us?
=================================================================================
Thanks again for taking the time to meet with us and discuss the CiviCRM plugin and ways that we can deepen our partnership. As we mentioned on the call, Stripe is heightening our security standards by requiring all plugin developers and merchants to use a Stripe Apps supported authentication method.
There are 2 ways CiviCRM can achieve these new security requirements: by implementing either OAuth or Restricted API key (RAK) authentication via a Stripe App, and/or migrating to standard Connect. Please review the [technical onboarding guide](https://stripe.com/docs/stripe-apps/onboarding-plugin) and documentation for [OAuth](https://stripe.com/docs/stripe-apps/api-authentication/oauth) Apps and [RAK](https://stripe.com/docs/stripe-apps/api-authentication/rak) Apps.
All plugin developers using unrestricted API keys must complete the security upgrade by June 2024 in order to avoid any impact to your plugin. Below is a high level timeline of this deprecation:
* April ‘24 - Stripe will send a security risk notification to all merchants using non-secure plugins and will add a security flag on all non-secure plugins in the Stripe Dashboard.
* August ‘24 - Stripe will begin to deprecate the use of non-secure plugins.
Upgrading to Stripe Apps will not only help you meet these security requirements, but can also help you increase your plugin’s distribution. As part of the update, we are offering all developers a Stripe App Marketplace listing, plugin analytics dashboards, and an invitation to [Stripe’s Partner Program](https://docs.stripe.com/partners#benefits).
In addition, the Stripe Apps marketplace and our new, more secure framework do not support legacy integrations. *As such, we will require all plugins in the Stripe Apps marketplace to be on non-legacy UIs (Card Element) in order to ensure the best user and merchant experience.* By implementing Stripe's Optimized Checkout Suite ([payment elements](https://stripe.com/docs/payments/payment-element/migration), [payment methods](https://stripe.com/docs/payments/elements/link-authentication-element), and [Link](https://stripe.com/docs/payments/elements/link-authentication-element)) CiviCRM can leverage our newest checkout products and drive revenue.
Please let us know once you've had a chance to review with your team. We would like to schedule a follow up call later this week or next to help you scope your upgrades, discuss Connect revshare opportunity, and answer any technical questions.https://lab.civicrm.org/extensions/dataprocessor/-/issues/141Creating Report Output causes "navigation_menu" dependency error (site goes d...2024-03-28T20:34:16ZpbarmakCreating Report Output causes "navigation_menu" dependency error (site goes down)On the latest version of dataprocessor, on WordPress with Civi 5.71.1, if I create a new data processor and I add an output of Search / Report, I get the following error and the whole site goes down (cannot navigate anywhere without that...On the latest version of dataprocessor, on WordPress with Civi 5.71.1, if I create a new data processor and I add an output of Search / Report, I get the following error and the whole site goes down (cannot navigate anywhere without that error and nothing else shows):
`The parameter "navigation_menu" has a dependency on a non-existent parameter "2Fdataprocessor_search".`
This happens on any type of data processor where I select Search / Report as an output. Other outputs I've tried (ex. dashlet) seem to work. And it's only happening on WordPress, my Drupal 7 site seems fine.https://lab.civicrm.org/extensions/ukgiftaid/-/issues/42PHP 8 error on Remove from Gift Aid batch2024-03-28T17:01:05ZdavejPHP 8 error on Remove from Gift Aid batchOn PHP 8.1, we got a PHP error on the _Remove from Gift Aid batch_ task. This resulted in the remove from batch form being only partially rendered, unstyled and not usable. The PHP error:
```
TypeError: count(): Argument #1 ($value) must...On PHP 8.1, we got a PHP error on the _Remove from Gift Aid batch_ task. This resulted in the remove from batch form being only partially rendered, unstyled and not usable. The PHP error:
```
TypeError: count(): Argument #1 ($value) must be of type Countable|array, null given in include() (line 54 of .../files/civicrm/templates_c/en_GB/%%1D/1D7/1D7FFE0E%%RemoveFromBatch.tpl.php).
```
PR to follow.
**Versions**
- UK Gift Aid 3.5.3
- CiviCRM 5.65.2
- Drupal 10.2.2
- PHP 8.1.27https://lab.civicrm.org/extensions/theisland/-/issues/17Confirmation page is full screen with no border2024-03-28T16:06:52ZGuillaumeSorelConfirmation page is full screen with no borderIs there a way to override the /civicrm/ext/theisland/css/custom-civicrm.css? It's using a default #e8eef0 forced as important for the main wrapper or comes with tiny or no padding.
![image](/uploads/5f48b571bbaaf322a85e6db3fe9416a6/ima...Is there a way to override the /civicrm/ext/theisland/css/custom-civicrm.css? It's using a default #e8eef0 forced as important for the main wrapper or comes with tiny or no padding.
![image](/uploads/5f48b571bbaaf322a85e6db3fe9416a6/image.png)https://lab.civicrm.org/extensions/mosaicoextras/-/issues/2WP - Update permissions to non-deprecated format2024-03-28T07:46:07ZspeleoWP - Update permissions to non-deprecated formatRunning
- CiviCRM 5.71.1
- php 8.1.27
- version 1.99 of dataprocessor.php
This seems related to extensions/dataprocessor!125 which has been marked as fixed/closed.
https://lab.civicrm.org/extensions/dataprocessor/-/merge_requests/125...Running
- CiviCRM 5.71.1
- php 8.1.27
- version 1.99 of dataprocessor.php
This seems related to extensions/dataprocessor!125 which has been marked as fixed/closed.
https://lab.civicrm.org/extensions/dataprocessor/-/merge_requests/125?commit_id=c2e6a48725b05cd5f69d259194d1f3539a6395a4
I've checked and I'm already running this fix.
debug.log full of
PHP Deprecated: Permission 'xxxx' should be declared with 'label' and 'description' keys. See https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_permission/ Caller: CRM_Core_Permission::assembleBasicPermissions in /home/bertie/public_html/wp/wp-content/plugins/civicrm/civicrm/CRM/Core/Error.php on line 1129
The permissission xxxx above is one of
- CiviMobile backend access
- view Agenda
- see tags
- see groups
- CiviMobile backend access
- administer CiviDiscount
- can check in on event
If the calling method has been fixed, would the notices be caused by the extension code not passing the right arguments?https://lab.civicrm.org/extensions/mosaicoextras/-/issues/15.71 compatibility2024-03-28T07:46:06ZDetlev Sieber5.71 compatibilityThe cronjob is throwing a warning message:
> \[PHP User Deprecation\] Permission 'delete Mosaico templates' should be declared with 'label' and 'description' keys. See https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_permission...The cronjob is throwing a warning message:
> \[PHP User Deprecation\] Permission 'delete Mosaico templates' should be declared with 'label' and 'description' keys. See https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_permission/ Caller: CRM_Core_Permission::assembleBasicPermissions at /usr/www/users/crmxxxxx/sub.domain.tld/vendor/civicrm/civicrm-core/CRM/Core/Error.php:1129
In a Drupal environment, this is sending an email every time the cronjob is running.https://lab.civicrm.org/extensions/cividiscount/-/issues/308CiviDiscount 3.8.10 and Master (21/02/2024) - Discounts for events, option: "...2024-03-27T22:05:56Zjustinfreeman (Agileware)CiviDiscount 3.8.10 and Master (21/02/2024) - Discounts for events, option: "Any event" does not work - discount code is not recognised, does not apply any discountCiviDiscount 3.8.10 and Master (21/02/2024) - Discounts for events, option: "Any event" does not work - discount code is not recognised, does not apply any discount.
It also appears that none of the events selected in the "Discounts for...CiviDiscount 3.8.10 and Master (21/02/2024) - Discounts for events, option: "Any event" does not work - discount code is not recognised, does not apply any discount.
It also appears that none of the events selected in the "Discounts for events" field work either - so basically this field just doesn't work from my testing on dmaster, CiviCRM 5.72.alpha1
![image](/uploads/d80c7de48ac08fa7da9093852d843e4c/image.png)
![image](/uploads/f4e653234581ce8d5dace4f8e3b4d5da/image.png)
Agileware Ref: CIVIDISC-12https://lab.civicrm.org/extensions/civimobileapi/-/issues/73API wrappers cause massive performance hit2024-03-26T19:30:20ZJonGoldAPI wrappers cause massive performance hitA client site had very slow speeds when editing events, managing groups, etc. Simply loading the "Locations" tab on an event was taking 20 seconds.
XDebug Profiler tracked it down to the permissions check. After reviewing the permissi...A client site had very slow speeds when editing events, managing groups, etc. Simply loading the "Locations" tab on an event was taking 20 seconds.
XDebug Profiler tracked it down to the permissions check. After reviewing the permissions on various extensions, I removed the Event API wrapper, and the page loaded in 600ms.
I would need to do further profiling calling the API directly to determine the exact cause, and my client was only testing CiviMobile, but I thought I would pass it on.https://lab.civicrm.org/extensions/civimobileapi/-/issues/89Drupal 9/10 is not supported2024-03-26T18:37:56ZDetlev SieberDrupal 9/10 is not supportedDrupal 9 is using different paths, that are not supported by civimobile as is:
![grafik.png](/uploads/2e60832a6091334f3e383e62d3ee2473/grafik.png)
There is a workaround described here:
https://civihosting.com/blog/civimobile-and-drupa...Drupal 9 is using different paths, that are not supported by civimobile as is:
![grafik.png](/uploads/2e60832a6091334f3e383e62d3ee2473/grafik.png)
There is a workaround described here:
https://civihosting.com/blog/civimobile-and-drupal-9/
... but that "solution" is very hacky and will be destroyed with every "composer require".
Would it be possible to implement a sustaining solution into CiviMobile, in order to make it work "out of the box" for Drupal 10?
(this is a duplicate / wrapper for #66, #81 and #70 ).
By the way, #66 and #70 should not be marked closed, imo.https://lab.civicrm.org/extensions/reporterror/-/issues/6After install on d10 site civicrm was unavailable (500 response)2024-03-26T17:08:36Zkiwi_BrogrammerAfter install on d10 site civicrm was unavailable (500 response)with 3.6 release, installed into site running drupal v10.0.9 with civicrm v5.61.4.
post install was unable to access civicrm admin, all pages returning 500 state with some access to drupal cms admin pages.
when trying to disable exte...with 3.6 release, installed into site running drupal v10.0.9 with civicrm v5.61.4.
post install was unable to access civicrm admin, all pages returning 500 state with some access to drupal cms admin pages.
when trying to disable extension with CV this response was given.
```
cv ext:disable reporterror
PHP Fatal error: Declaration of Psr\Log\AbstractLogger::emergency($message, array $context = []) must be compatible with Psr\Log\LoggerInterface::emergency(Stringable|string $message, array $context = []): void in /srv/www/../web/sites/default/civicrm/ext/reporterror/vendor/psr/log/Psr/Log/AbstractLogger.php on line 22
Fatal error: Declaration of Psr\Log\AbstractLogger::emergency($message, array $context = []) must be compatible with Psr\Log\LoggerInterface::emergency(Stringable|string $message, array $context = []): void in /srv/www/../web/sites/default/civicrm/ext/reporterror/vendor/psr/log/Psr/Log/AbstractLogger.php on line 22
```
was able to recover the site by commenting out include statement at https://lab.civicrm.org/extensions/reporterror/-/blob/master/reporterror.php#L8bgmbgmhttps://lab.civicrm.org/extensions/civimobileapi/-/issues/94Does the extension work ???2024-03-26T12:06:34ZGuillaumeSorelDoes the extension work ???{DISCLAIMER} I know it's war in Ukraine and that you might have better things to do. So it's ok if you don't have time and energy to work on it.
As an admin I updated to version6.3.0 on CiviCRM 5.67.3 (WP) with the Rest Api extension a...{DISCLAIMER} I know it's war in Ukraine and that you might have better things to do. So it's ok if you don't have time and energy to work on it.
As an admin I updated to version6.3.0 on CiviCRM 5.67.3 (WP) with the Rest Api extension add-on also installed.
On the backoffice, I can see that my settings are ok but I can't connect if I uncheck the 'Show Public area' checkbox and if I check it then I just have access to petitions.
I've controlled all my settings and just can't succeed to make it work properly to access contacts and activities.
Is there an updated documentation maybe?https://lab.civicrm.org/extensions/gdpr/-/issues/343Missing translation for Terms & Conditions2024-03-26T09:38:18ZGuillaumeSorelMissing translation for Terms & ConditionsIn French but I guess in other languages it's not possible de get the translated chain for 'Terms & Conditions'.
I had to hard translate in ./templates/CRM/Gdpr/TermsConditionsField.tpl to get it in French.
It looks like it's related to...In French but I guess in other languages it's not possible de get the translated chain for 'Terms & Conditions'.
I had to hard translate in ./templates/CRM/Gdpr/TermsConditionsField.tpl to get it in French.
It looks like it's related to the '&' here https://lab.civicrm.org/extensions/gdpr/-/blame/master/templates/CRM/Gdpr/TermsConditionsField.tpl?ref_type=heads#L5
![image](/uploads/fd3caa423f4e940e4c685bec729b7255/image.png)https://lab.civicrm.org/extensions/firewall/-/issues/34Payment fails on Drupal 9.2+ webforms for anonymous users2024-03-26T00:03:43ZBobSPayment fails on Drupal 9.2+ webforms for anonymous usersDrupal 9.2+ does not by default create a [session for anonymous users](https://www.drupal.org/node/3006306). This results in a CSRF failure when submitting webforms which include a payment section.
CiviCRM ensures that a session is crea...Drupal 9.2+ does not by default create a [session for anonymous users](https://www.drupal.org/node/3006306). This results in a CSRF failure when submitting webforms which include a payment section.
CiviCRM ensures that a session is created for all form requests that it handles, but this does not include webform requests.
When responding to Ajax requests to /drupal/civicrm/payment/form initiated from a Drupal Webform,
`Firewall::generateCSRFToken()` calls `\CRM_Core_Config::singleton()->userSystem->getSessionId()` which in turn initializes the `civicrm.tempstore.sessionid` $_SESSION array element. Normally, this would cause Drupal to save the session. However, the Ajax request is terminated by CiviCRM before the normal Drupal request flow is completed, and thus, the session is not saved and no session cookie is emitted.
One solution would be to modify CiviCRM core to save the session before terminating Ajax requests. But, since this failure is specific to the CSRF token generated by the Firewall extension, I think it is more appropriate to fix it there.
The following patch to Firewall::generateCSRFToken() (v1.5.9) resolves the problem. It was tested on Drupal 10.2.3 for both anonymous and logged-in users, and is believed to be compatible with earlier Drupal versions.
```
*** firewall/Civi/Firewall/Firewall_v1.5.9.php Mon Mar 25 09:18:23 2024
--- firewall/Civi/Firewall/Firewall.php Mon Mar 25 17:01:36 2024
***************
*** 277,282 ****
--- 277,294 ----
if (!empty($context)) {
\CRM_Core_Session::singleton()->set('csrf.' . $publicToken, $context, 'civi.firewall');
}
+
+ //Drupal 9.2+ does not by default create a session for anonymous users.
+ //While processing an Ajax request to /drupal/civicrm/payment/form initiated
+ //from a Drupal Webform, we therefore save the session to ensure that anonymous
+ //users receive a session cookie.
+ if (($_REQUEST["is_drupal_webform"] ?? '') == '1' &&
+ method_exists('\Drupal', 'request') &&
+ method_exists(\Drupal::request(), 'getSession') &&
+ method_exists(\Drupal::request()->getSession(), 'save')) {
+ \Drupal::request()->getSession()->save();
+ }
+
return $publicToken;
}
```
See duplicate issue https://lab.civicrm.org/extensions/stripe/-/issues/473.https://lab.civicrm.org/extensions/groupfields/-/issues/1What is the default behavior if NO groups are selected within the Active Groups?2024-03-25T20:09:59ZStoobWhat is the default behavior if NO groups are selected within the Active Groups?1. display all public groups
2. display no public groups
Thx!1. display all public groups
2. display no public groups
Thx!https://lab.civicrm.org/extensions/stripe/-/issues/473Drupal 9 + WebForm: "Bad Request" after upgrading to CiviCRM 5.71.02024-03-25T20:04:28ZmasettoDrupal 9 + WebForm: "Bad Request" after upgrading to CiviCRM 5.71.0I don't know if this is a Stripe or Firewall issue, I write what happened to me.
I have a CiviCRM installation with Drupal 9.5.11 and WebForm 6.2.4. After upgrading to CiviCRM 5.71.0 (I had the same problem on v5.70.0), the webform conn...I don't know if this is a Stripe or Firewall issue, I write what happened to me.
I have a CiviCRM installation with Drupal 9.5.11 and WebForm 6.2.4. After upgrading to CiviCRM 5.71.0 (I had the same problem on v5.70.0), the webform connected with Stripe payment processor give me an error
![image](/uploads/fb6448037d868c3d01be677fec1b1d14/image.png)
I debugged and found that the error is generated in `Civi/Api4/Action/StripePaymentintent/ProcessPublic.php`:
```php
$event = \Civi::dispatcher()->dispatch('civi.stripe.authorize', $authorizeEvent);`
if ($event->isAuthorized() === FALSE) {
throw new \CRM_Core_Exception('Bad Request');
}
```
The API4 is `StripePaymentintent.ProcessPublic` and these are the parameters:
```
Array
(
[paymentMethodID] => pm_1OrhO7GYnf18AbeR11Ftobfo
[amount] => 4.00
[currency] => EUR
[paymentProcessorID] => 3
[description] => Donate Now
[extraData] =>
[csrfToken] => 1709820194.b23530a1ab275ce872a9271d.3454a517e3658a9bbf1e380ec4a9228d49d0c618efaa7fb13dbfc41e860f7445
[captcha] =>
[checkPermissions] => 1
)
```
My IP finished in `civicrm_firewall_ipaddress` table, event_type "InvalidCSRFEvent" and source "tampered hash".
Sorry if I wrote in the wrong place, but I don't know how to untangle myself to understand and fix it.https://lab.civicrm.org/extensions/ncn-civi-zoom/-/issues/7Returns ID not found for valid ID2024-03-25T13:19:50ZlokerReturns ID not found for valid IDI'm using the extension for few months with success, but today I've started to get an error like "Meeting ID (...) not found for this user ID: <email>" but the user and IDs are both correct. Both event on zoom and information on civicrm ...I'm using the extension for few months with success, but today I've started to get an error like "Meeting ID (...) not found for this user ID: <email>" but the user and IDs are both correct. Both event on zoom and information on civicrm are the exact same settings with previously working one. If I enter , between digits as it become after checking, it says Parameters missing.https://lab.civicrm.org/extensions/civirules/-/issues/210Deprecate conditions/actions?2024-03-24T23:20:19ZJonGoldDeprecate conditions/actions?We have conditions/actions that we've replaced with better versions, but maintained the old one for compatibility with existing rules.
However, some of these old conditions/actions are dangerous (e.g. [see discussion on PR #26580](https...We have conditions/actions that we've replaced with better versions, but maintained the old one for compatibility with existing rules.
However, some of these old conditions/actions are dangerous (e.g. [see discussion on PR #26580](https://github.com/civicrm/civicrm-core/pull/26580)). We should have a way of deprecating conditions/actions.
Proposal:
* Use `is_active` if it's not otherwise used - otherwise create `is_deprecated` column.
* Modify the upgrader to allow passing in the new value.
* A system check for rules with deprecated conditions/actions.
* Deprecated rules can't be selected on new rules.
* (Strongly prefer) we don't allow users to save rules with deprecated conditions/actions.
* In time, we remove the deprecated items.
I can write the code for this if there's buy-in from other stakeholders. I envision a `deprecated()` method on deprecated conditions/actions that returns help text for replacing the condition/action. In many cases, it can probably be automated.JonGoldJonGoldhttps://lab.civicrm.org/extensions/civirules/-/issues/208Delayed action: does it check conditions of "TriggerData" saved at the time o...2024-03-23T21:13:27ZmasettoDelayed action: does it check conditions of "TriggerData" saved at the time of trigger?Mine is rather a question: when I receive a 'pay later' contribution by bank transfer, I have to send an immediate reminder and one after 10 days unless it has been paid in the meantime.
So I created a rule with an action with a delay a...Mine is rather a question: when I receive a 'pay later' contribution by bank transfer, I have to send an immediate reminder and one after 10 days unless it has been paid in the meantime.
So I created a rule with an action with a delay after 10 days.
I expected it to check the contribution status after 10 days, but instead it seems to use 'TriggerData', i.e. the data saved at the time of the trigger.
The result is that it always sends the reminder after 10 days even if the contribution has been paid in the meantime.
But if so:
- what is the point of `ignore_condition_with_delay` if the `TriggerData` is the one saved at the time of the trigger?
- to do what I need, do I have to create another rule?
Thanks.https://lab.civicrm.org/extensions/civimobile/-/issues/2Search just loops forever - no results2024-03-22T14:50:24ZthemakSearch just loops forever - no resultsSearching for anything - the search just loops (ajax loader gif) - nothing loads.
This has been going on for a while - not sure what the solution is.
On two wordpress sites - similar hosting environment.Searching for anything - the search just loops (ajax loader gif) - nothing loads.
This has been going on for a while - not sure what the solution is.
On two wordpress sites - similar hosting environment.https://lab.civicrm.org/extensions/stripe/-/issues/465contribution fails when percentage field is enabled2024-03-21T13:05:14Zmtnpavlascontribution fails when percentage field is enabledAfter upgrading to the Civi and extension versions as listed below, contributions fail when the % field is configured and enabled in the price set.
- CiviCRM 5.69.2
- Stripe Payment Processor 6.10.2
- Payment Shared 1.2.20
- Percentage P...After upgrading to the Civi and extension versions as listed below, contributions fail when the % field is configured and enabled in the price set.
- CiviCRM 5.69.2
- Stripe Payment Processor 6.10.2
- Payment Shared 1.2.20
- Percentage Price Set Field 1.5.2
- Joomla 4.4.2
On the website (Civi contribution page) the user gets the following error message:
`Stripe An error occurred while processing the payment`
In Stripe I see the following:
```
Request parameters
{
"description": "Donate to Evergreen 8831X92675 #d973750916e515f092192009b6d48213",
"statement_descriptor_suffix": "8831X92675 D",
"statement_descriptor": "8831X92675 Donate to E",
"amount": "10350",
"customer": "cus_KbTE...."
}
Response body
{
"error": {
"code": "payment_intent_unexpected_state",
"doc_url": "https://stripe.com/docs/error-codes/payment-intent-unexpected-state",
"message": "This PaymentIntent's amount could not be updated because it has a status of requires_capture. You may only update the amount of a PaymentIntent with one of the following statuses: requires_payment_method, requires_confirmation, requires_action.",
"param": "amount",
"payment_intent": {
"id": "pi_3ObWZNLHe2ijJmBv1UzhEZ47",
"object": "payment_intent",
"amount": 10386,
"amount_capturable": 10386,
"amount_details": {
"tip": {
}
},
"amount_received": 0,
"application": null,
"application_fee_amount": null,
"automatic_payment_methods": null,
"canceled_at": null,
"cancellation_reason": null,
"capture_method": "manual",
"client_secret": "pi_3O**********************_******_*********************sk8p",
"confirmation_method": "manual",
"created": 1705964781,
"currency": "usd",
"customer": null,
"description": null,
"invoice": null,
"last_payment_error": null,
"latest_charge": "ch_3ObWZNLHe2ijJmBv17AUXXga",
"livemode": true,
"metadata": {
},
"next_action": null,
"on_behalf_of": null,
"payment_method": "pm_1ObWZLLHe2ijJmBvDkAWdhSh",
"payment_method_configuration_details": null,
"payment_method_options": {
"card": {
"installments": null,
"mandate_options": null,
"network": null,
"request_three_d_secure": "automatic"
}
},
"payment_method_types": [
"card"
],
"processing": null,
"receipt_email": null,
"review": null,
"setup_future_usage": "off_session",
"shipping": null,
"source": null,
"statement_descriptor": null,
"statement_descriptor_suffix": null,
"status": "requires_capture",
"transfer_data": null,
"transfer_group": null
},
"request_log_url": "https://dashboard.stripe.com/logs/req_H22ZX2zYJorHKW?t=1705964784",
"type": "invalid_request_error"
}
}
```
Please note the $103.86 vs. $103.50 amounts ($103.50 is the correct amount; we do not use tax in our config and price sets anywhere.)
Any thoughts on where this is coming from - Civi/% field/Stripe?
Thank you!