I’ve created a function to create a stripe custom company account for my users, and everything is working great, but when I try and update the terms of service data in node.js, it comes up with no errors, but when I go to the Stripe dashboard it says the account still requires a terms of service acceptance. What should I do?
Here is the function that creates the account:
export const createStripeMerchant = async (connectId: any, line1: any, line2: any, city: any, country: any, postCode: any,
day: any, month: any, year: any, uid: any, email: any, firstName: any, lastName: any, phoneNumber: any ) => {
const account = await stripe.accounts.createPerson(
connectId,
{
address: {
line1: line1,
line2: line2,
city: city,
country: country,
postal_code: postCode,
},
dob: {
day: day,
month: month,
year: year,
},
first_name: firstName,
last_name: lastName,
email: email,
relationship: {
executive: true,
director: true,
representative: true,
title: 'Director',
},
phone: phoneNumber,
metadata: { firebaseUID: uid },
});
await updateMerchantId(uid, { personAccountId: account.id });
return account;
}
Here is the function that adds on the terms of service acceptance:
export const updateStripeConnect = async (connectId: any, uid: any, date: any, ip: any, userName: any) => {
const account = await stripe.accounts.update(
connectId,
{
tos_acceptance: {
date: date,
ip: ip,
service_agreement: 'full',
user_agent: userName,
},
}
);
return account;
}
I’m calling it like this:
createStripePerson({
connectId: connectId,
line1: address1.val(),
line2: address2.val(),
city: cityTown.val(),
country: 'GB',
postCode: postCode.val(),
day: $("#dateOB").val().substring(8,10),
month: $("#dateOB").val().substring(5, 7),
year: $("#dateOB").val().substring(0, 4),
uid: uid,
email: email.val(),
firstName: firstName.val(),
lastName: lastName.val(),
phoneNumber: phoneInput.getNumber(),
}).then((result) => {
/** @type {any} */
const data = result.data;
const textData = data.text;
console.log("Result data: " + data);
console.log("Text data: " + textData);
updateStripeConnect({
connectId: connectId,
uid: uid,
date: unixTimestamp,
ip: ip,
userName: firstName.val() + " " + lastName.val(),
}).then((result) => {
/** @type {any} */
const data = result.data;
const textData = data.text;
console.log("Result data: " + data);
console.log("Text data: " + textData);
}).catch((error) => {
console.log("Error message: " + error.message);
console.log("Error details: " + error.details);
});
}).catch((error) => {
console.log("Error message: " + error.message);
console.log("Error details: " + error.details);
});
So, as I said, it all goes through, but the terms of service does not get fulfilled / is still required in Stripe’s dashboard: