#bassem-planity_terminal-tipping-config

1 messages ยท Page 1 of 1 (latest)

dapper sandBOT
#

๐Ÿ‘‹ Welcome to your new thread!

โฒ๏ธ We'll be here soon! Typically we respond in a few minutes, but sometimes we might take a bit longer if the server is busy or if you have a particularly tricky question.

โฑ๏ธ We close idle threads, which makes them read-only. Once a thread is closed it won't be reopened, but you can always start a new thread if you have another question.

๐Ÿ”— This thread will always be available, even after it's closed. You can find it again using Discord's search, or you can save this link: https://discord.com/channels/841573134531821608/1354816718458982622

๐Ÿ“ Have more to share? Add more details, code, screenshots, videos, etc. below.

astral bridge
#

Can you explain a bit more about what you're trying to do? What are you expecting to happen and what are you observing actually happening instead?

crimson solar
#

When sending a payment request to the stripe terminal, we expect the terminal to NOT suggest tips, instead it's suggesting tips.
It was ok a month ago or so. Since then, it is suggesting tips only on our German businesses. We don't have an issue on our French businesses.

#

Is it the default behavior ? Did you update anything on that matter ? We haven't found any changes in our code for it to change this behavior.

astral bridge
#

Are you using server driven requests or local reader control via SDK?

crimson solar
#

We call an aws lambda to init our stripe terminal, create payment intent, etc....
we are using this library: "stripe": "^10.0.0"

#

in the front end we use '@stripe/terminal-js'; to collectPaymentMethod for example

#

using the client_secret and paymentIntentId we got from the back end

#

this is our Front end:
const { id: paymentIntentId, client_secret } = yield call(
invokeLambda,
'stripeTpe',
{
token,
businessId,
// needed for stripe customer creation (if no account yet)
countryCode,
type: 'stripeTpe.createPaymentIntent',
amount,
customer: customer && customer.toJS(),
tpeType
}
);
// collect payment method for the connected reader to wait for a card
const { paymentIntent: collectedPaymentIntent, error: errorCollect } =
yield terminal.collectPaymentMethod(client_secret, {
config_override: {
skip_tipping: skipTips
}
});

dapper sandBOT
crimson solar
#

So, any idea ?

quartz pivot
#

๐Ÿ‘‹ stepping in as synthrider had to step away

#

Catching up

#

Can you provide a PaymentIntent ID where you see tipping taking place?

crimson solar
#

Why would you need that ?
Im not doing any payment. The terminal is suggesting tips when it should not. It used to work well until a month or so.

#

but here is one i just did:
pi_3R7HVOE7ePEuIRmR0pITztWK

quartz pivot
#

Can you reproduce this in test mode?

#

And can you complete a test payment where it shows tipping and provide that PaymentIntent ID?

#

I need to see where/why it might be getting set.

#

So that's why I need the object

crimson solar
#

ok ill try that one moment

quartz pivot
#

Thanks

crimson solar
#

this is a test one, but i dont have the issue in test mode ๐Ÿ˜ฆ
pi_3R7HbGE7ePEuIRmR1qDiqyOg

quartz pivot
#

Hmm that's strange.

crimson solar
quartz pivot
#

Are you positive you are using the same code as prod?

crimson solar
#

yes

quartz pivot
#

That one you just shared from prod wasn't completed though

#

So I can't see anything about the client

crimson solar
#

ok ill complete it then wait

#

pi_3R7HfkE7ePEuIRmR1H6lkG55

#

there this is a real payment

quartz pivot
#

Thanks, looking.

#

While I'm looking, what version of the Terminal JS SDK are you using?

crimson solar
#

"@stripe/react-stripe-js": "^2.8.0",
"@stripe/stripe-js": "^4.3.0",
"@stripe/terminal-js": "^0.10.1"

quartz pivot
#

Thanks

#

Still looking for our relevant logs here and the server is busy so helping other folks as well. In the meantime, have you hardcoded your skipTips variable in your prod code and set it to true. Or have you added a log immediately before collectPaymentMethod to log that variable?

crimson solar
#

Yeah i did both, didn't work, that why i contacted you

quartz pivot
#

Gotcha thanks.

#

Alrighty well I know you stated that you checked this but our logs do show that you passed skipTipping: false for that example PaymentIntent.

#

So next step is going to be to do some more debugging on your side, especially since you can't reproduce this in test mode.

crimson solar
#

ok let me see what i can do

#

German Business: { paymentIntentId: "pi_3R7II2E7ePEuIRmR1OG9vxvK", skipTips: false } => suggesting tips
French Business: { paymentIntentId: "pi_3R7IKdA69XfgDO9E1VbrCNIQ", skipTips: false }=> NOT suggesting tips

#

I didnt finish the payment, i have two readers next to each other, one is suggesting, the other is not

#

both have skipTips as false

#

this is production of course

#

and this is the code just in case:
console.log({ paymentIntentId, skipTips }); // collect payment method for the connected reader to wait for a card const { paymentIntent: collectedPaymentIntent, error: errorCollect } = yield terminal.collectPaymentMethod(client_secret, { config_override: { skip_tipping: skipTips } });

quartz pivot
#

Just for 100% certainty can you log the client_secret instead of the PaymentIntent ID?

crimson solar
#

yes

#

DE: { paymentIntentId: "pi_3R7IR9E7ePEuIRmR01zXUpFH", skipTips: false, client_secret: "pi_3R7IR9E7ePEuIRmR01zXUpFH_secret_JmyajbkdZR1LoXEsWyhqGq2mD", countryCode: "DE" }
FR: { paymentIntentId: "pi_3R7IRkA69XfgDO9E1lqcCyIt", skipTips: false, client_secret: "pi_3R7IRkA69XfgDO9E1lqcCyIt_secret_Z3C6qGQ1cbfHB5a4OqVv8b2ih", countryCode: "FR" }

quartz pivot
#

Alright I'm asking a colleague if they have any further ideas here. I'm stumped...

crimson solar
#

Thanks !

dapper sandBOT
crimson solar
#

We were stumped too here at planity ๐Ÿ˜‚

brittle scroll
#

Hello ๐Ÿ‘‹
Jumping in to help out here

Are the readers registered to different location?
Can you share the location IDs? tml_xxx

crimson solar
#

the readers ? like the terminal ?

brittle scroll
#

Yes

crimson solar
#

well i can interchange them, still have the issue

brittle scroll
#

Right but can you share the location IDs? Just want to check if the configuration is overriding the parameters you're passing in or not

crimson solar
#

the business i'm using now is my test business in production. WE are in france. The issue is from a business in Germany

#

ok hold on

#

locationId: "tml_FD6PwE0BJ1IGyw", countryCode: "DE"
locationId: "tml_FVvzAn1DGusYlF", countryCode: "FR"

#

there

#

country code is the business country code ๐Ÿ’ช

brittle scroll
#

And it works fine in FR meaning the issue is with tml_FD6PwE0BJ1IGyw

#

?

#

Any reader registered to tml_FD6PwE0BJ1IGyw shows tipping screen even when you pass skipTipping ?

crimson solar
#

Sorry i may have confused your colleague earlier on that point, if i pass skipTipping to true, it doesnt suggest tips anymore to any reader

#

but, as you can see earlier, i have both skipTipping to false, one is suggesting (DE) and the other is not (FR)

#

and yes it works fine in FR

brittle scroll
#

And to be clear, you're saying "one is suggesting" - you mean DE reader shows tipping automatically and FR does not (which is expected given your terminal configuration doesn't have any tipping specific config)

crimson solar
#

YES

#

My colleague suggested i send you this too:

async function main() {
const configuration = await stripe.terminal.configurations.retrieve(
'tmc_61SGLXq0BYdjGLSG041E7ePEuIRmR8Ce'
);
console.log(configuration);
const location = await stripe.terminal.locations.retrieve(
'tml_FD6PwE0BJ1IGyw'
)
console.log(location);
}

{
id: 'tmc_61SGLXq0BYdjGLSG041E7ePEuIRmR8Ce',
object: 'terminal.configuration',
bbpos_wisepos_e: { splashscreen: 'file_1R6xaSE7ePEuIRmRIie53EZO' },
is_account_default: false,
livemode: true,
name: ''
}
{
id: 'tml_FD6PwE0BJ1IGyw',
object: 'terminal.location',
address: {
city: 'Berlin',
country: 'DE',
line1: 'HauptstraรŸe 1',
line2: '',
postal_code: '10827',
state: ''
},
configuration_overrides: 'tmc_61SGLXq0BYdjGLSG041E7ePEuIRmR8Ce',
display_name: 'Planity Berlin',
livemode: true,
metadata: { businessId: '-MxiDG_b7xEivhzHVwhO' }
}

brittle scroll
crimson solar
#

CONFIG FOR DE STRIPE
{
"object": "list",
"data": [
{
"id": "tmc_61SGbepmqHKfKwdKf41E7ePEuIRmRMu0",
"object": "terminal.configuration",
"bbpos_wisepos_e": {
"splashscreen": "file_1R7DhQE7ePEuIRmRp0suKGSo"
},
"is_account_default": false,
"livemode": true,
"name": "",
"tipping": {
"eur": {
"fixed_amounts": [
100,
200,
500
]
}
}
},
{
"id": "tmc_61SGbVy7nStyCzigZ41E7ePEuIRmRDiC",
"object": "terminal.configuration",
"bbpos_wisepos_e": {
"splashscreen": "file_1R7DYaE7ePEuIRmRzQBZCX2u"
},
"is_account_default": false,
"livemode": true,
"name": "",
"tipping": {
"eur": {
"fixed_amounts": [
100,
200,
500
]
}
}
},
{
"id": "tmc_61SGMvkNys3EuY7pX41E7ePEuIRmRUdU",
"object": "terminal.configuration",
"bbpos_wisepos_e": {
"splashscreen": "file_1R6yyME7ePEuIRmR0Acw8emm"
},
"is_account_default": false,
"livemode": true,
"name": ""
}
],
"has_more": true,
"url": "/v1/terminal/configurations"
}

brittle scroll
#

can you set is_account_default to true ?

#

when you make the API request

crimson solar
#

ok

#

{
"object": "list",
"data": [
{
"id": "tmc_E3RgngJt1eJ8fJ",
"object": "terminal.configuration",
"is_account_default": true,
"livemode": true,
"name": "DEFAULT",
"tipping": {
"eur": {
"percentages": [
10,
12,
15
]
}
}
}
],
"has_more": false,
"url": "/v1/terminal/configurations"
}

brittle scroll
#

does that match the tipping screen you're seeing on the reader?

crimson solar
#

yes

#

the config default for FR is different :
CONFIG FOR FR STRIPE
{
"object": "list",
"data": [
{
"id": "uc_cb7c5501-0680-4c42-b9d9-e55bd17f69fb",
"object": "terminal.configuration",
"is_account_default": true,
"livemode": true,
"name": "DEFAULT"
}
],
"has_more": false,
"url": "/v1/terminal/configurations"
}

#

this is the reason ?

brittle scroll
#

I see. Looks like for some reason your DE location's configuration is getting overridden by your account's default config.

crimson solar
#

some reason

#

ok

#

so how can i fix this ?

brittle scroll
crimson solar
#

Thank you so much, i'll try that

#

Do you have info on when was the default configuration changed, updated, created, recreated or something like that : tmc_E3RgngJt1eJ8fJ
We are confused about this. ๐Ÿคฏ

brittle scroll
#

Based on our internal logs - it was created on 2022-11-18 14:56:34 UTC and was recently updated 2025-03-18 11:25:51 UTC

We likely don't keep any other logs so can't share more

crimson solar
#

Thats already a lot of help !

#

Thank you

brittle scroll
#

NP! are you seeing tipping screen with a new configuration?

crimson solar
#

We didn't do the steps above yet, we will do them soon or tomorrow

#

or you did something from your side ?

#

and also, is there an interface on stripe to change the default configuration ?

brittle scroll
#

I've flagged it internally to our Terminal team just to make sure nothing is broken..

and also, is there an interface on stripe to change the default configuration ?
Hmm I don't believe you can change this via the API but let me see if there's anything on the dashboard

crimson solar
#

no i mean via the dashboard

#

ok i found it

brittle scroll
#

yup

crimson solar
#

Thank you ๐Ÿ™

brittle scroll
#

NP! Happy to help.. Sorry for the trouble.

crimson solar
#

Not sure the trouble came from your side, we can't seem to know as you said earlier who touched this on 2025-03-18 11:25:51 UTC

#

But yes thank you so much