Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
995b846
feat: 75707 gather KYB files for USD flow
MrMuzyk Nov 25, 2025
b9d72c4
feat: step v1
MrMuzyk Nov 25, 2025
a13dd26
Merge branch 'main' of https://github.com/Expensify/App into feat/757…
MrMuzyk Nov 26, 2025
6e9db69
Merge branch 'main' of https://github.com/Expensify/App into feat/757…
MrMuzyk Dec 2, 2025
f6c2536
Merge branch 'main' of https://github.com/Expensify/App into feat/757…
MrMuzyk Dec 5, 2025
3f2f902
feat: new step
MrMuzyk Dec 5, 2025
005850b
Merge branch 'main' of https://github.com/Expensify/App into feat/757…
MrMuzyk Dec 11, 2025
d5bac0c
feat: file types
MrMuzyk Dec 12, 2025
8fd1cf9
Merge branch 'main' of https://github.com/Expensify/App into feat/757…
MrMuzyk Dec 15, 2025
76926e7
feat: pause
MrMuzyk Dec 16, 2025
c8a0677
Merge branch 'main' of https://github.com/Expensify/App into feat/757…
MrMuzyk Dec 19, 2025
88ab4a4
feat: types
MrMuzyk Dec 19, 2025
e96c832
Merge branch 'main' of https://github.com/Expensify/App into feat/757…
MrMuzyk Dec 29, 2025
f0f4304
feat: submit
MrMuzyk Dec 29, 2025
6faea26
fix: checks
MrMuzyk Dec 29, 2025
840da4f
fix: add kyb param
MrMuzyk Dec 30, 2025
208d831
Merge branch 'main' of https://github.com/Expensify/App into feat/757…
MrMuzyk Feb 13, 2026
3a4d54d
feat: param name
MrMuzyk Feb 16, 2026
6832d65
Merge branch 'main' of https://github.com/Expensify/App into feat/757…
MrMuzyk Feb 16, 2026
1f95a69
Merge branch 'main' of https://github.com/Expensify/App into feat/757…
MrMuzyk Feb 23, 2026
d3d828b
Merge branch 'main' of https://github.com/Expensify/App into feat/757…
MrMuzyk Mar 3, 2026
d6d6cda
Merge branch 'main' of https://github.com/Expensify/App into feat/757…
MrMuzyk Mar 6, 2026
e47fa57
Merge branch 'main' of https://github.com/Expensify/App into feat/757…
MrMuzyk Mar 11, 2026
5b0aaa7
fix: can be missing
MrMuzyk Mar 11, 2026
f340a97
Merge branch 'main' of https://github.com/Expensify/App into feat/757…
MrMuzyk Mar 13, 2026
cada552
Merge branch 'main' of https://github.com/Expensify/App into feat/757…
MrMuzyk Mar 16, 2026
bf5afa5
Merge branch 'main' of https://github.com/Expensify/App into feat/757…
MrMuzyk Mar 20, 2026
fed5fdc
Merge branch 'main' of https://github.com/Expensify/App into feat/757…
MrMuzyk Mar 23, 2026
53e3397
Merge branch 'main' of https://github.com/Expensify/App into feat/757…
MrMuzyk Mar 31, 2026
3dec25a
Merge branch 'main' of https://github.com/Expensify/App into feat/757…
MrMuzyk Apr 7, 2026
51237b6
Merge branch 'main' of https://github.com/Expensify/App into feat/757…
MrMuzyk Apr 9, 2026
f303e02
Merge branch 'main' of https://github.com/Expensify/App into feat/757…
MrMuzyk Apr 10, 2026
1a36568
feat: after rebase
MrMuzyk Apr 10, 2026
caf6acf
fix: pass params differently
MrMuzyk Apr 10, 2026
3c9e921
plug in finish via chat button and update the submit logic
MrMuzyk May 6, 2026
cd891ef
Merge branch 'refactor/79048-restore-reverted-usd-flow' of github.com…
MrMuzyk May 6, 2026
d9efd33
Merge branch 'main' of https://github.com/Expensify/App into feat/757…
MrMuzyk May 8, 2026
ec512c7
fix: const renaming
MrMuzyk May 8, 2026
8c9d9f0
fix: false positive
MrMuzyk May 8, 2026
5c1bbf7
Reapply "feat: 79048 restore reverted usd flow"
MrMuzyk May 12, 2026
9b1d68f
fix: update details
MrMuzyk May 12, 2026
f7fecec
fix: hide date picker on navigating forward via hardware button
MrMuzyk May 12, 2026
6428b30
fix: allow resubmitting after going back
MrMuzyk May 14, 2026
b6d3e94
fix: reseting freshly connected acc
MrMuzyk May 15, 2026
d3f9951
Merge branch 'feat/79048-restore' of github.com:callstack-internal/Ex…
MrMuzyk May 15, 2026
7a2356f
fix: code review improvements
MrMuzyk May 18, 2026
c7f3e11
Merge branch 'main' of https://github.com/Expensify/App into feat/757…
MrMuzyk May 29, 2026
c9687c7
fix: after rebase
MrMuzyk May 29, 2026
5bf2826
Update descriptions
VickyStash Jun 1, 2026
46bfc03
Skip KYB documents step when no documents are required
VickyStash Jun 1, 2026
f9e4c2d
Fix KYB tax ID upload crash from draft key collision
VickyStash Jun 1, 2026
30b9901
Merge branch 'main' into feat/75707-usd-flow-kyb-files
VickyStash Jun 5, 2026
d338a68
Add getRequiredKYBDocuments tests
VickyStash Jun 5, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -1052,7 +1052,8 @@
"modules/group-ib-fp",
"web/snippets/gib.js",
"tests/unit/hooks/useLetterAvatars.test.tsx",
"tests/unit/usePersonalDetailSearchSelectorTest.tsx"
"tests/unit/usePersonalDetailSearchSelectorTest.tsx",
"tests/unit/BankAccountUtilsTest.ts"
],
"ignoreRegExpList": ["@assets/.*"],
"useGitignore": true
Expand Down
29 changes: 29 additions & 0 deletions src/CONST/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -666,6 +666,7 @@ const CONST = {
ACH_CONTRACT: 'ACHContractStep',
VALIDATION: 'ValidationStep',
ENABLE: 'EnableStep',
KYB_DOCS: 'UploadKYBDocs',
},
PAGE_NAMES: {
COUNTRY: 'currency-and-country',
Expand All @@ -677,6 +678,7 @@ const CONST = {
ACH_CONTRACT: 'ach-contract',
VALIDATION: 'validation',
ENABLE: 'enable',
KYB_DOCS: 'upload-kyb-documents',
},
STEP_NAMES: ['1', '2', '3', '4', '5', '6'],
BANK_INFO_STEP: {
Expand Down Expand Up @@ -777,6 +779,33 @@ const CONST = {
BUSINESS: 'BUSINESS',
PERSONAL: 'PERSONAL',
},
KYB_STATUS: {
PASS: 'pass',
},
KYB_REQUESTOR_IDENTITY_ERROR: {
ADDRESS: [
'resultcode.address.does.not.match',
'resultcode.street.name.does.not.match',
'resultcode.street.number.does.not.match',
'resultcode.zip.does.not.match',
'resultcode.state.does.not.match',
'resultcode.alternate.address.alert',
'resultcode.input.address.is.po.box',
'resultcode.located.address.is.po.box',
'resultcode.warm.address.alert',
],
DOB: [
'resultcode.coppa.alert',
'resultcode.age.below.minimum',
'resultcode.dob.does.not.match',
'resultcode.yob.does.not.match',
'resultcode.yob.within.one.year',
'resultcode.mob.does.not.match',
'resultcode.no.mob.available',
'resultcode.no.dob.available',
'resultcode.ssn.issued.prior.to.dob',
],
},
},
CORPAY_DOCUMENT: {
ALLOWED_FILE_TYPES: ['pdf', 'jpg', 'jpeg', 'png'],
Expand Down
32 changes: 32 additions & 0 deletions src/languages/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4112,6 +4112,38 @@ ${amount} für ${merchant} – ${date}`,
weTake: 'Wir nehmen Ihre Sicherheit ernst. Bitte richten Sie jetzt 2FA ein, um Ihrem Konto eine zusätzliche Schutzebene hinzuzufügen.',
secure: 'Schütze dein Konto',
},
documentsStep: {
beforeYouGo: 'Bevor du fortfährst, benötigen wir einige Dokumente, um bestimmte Angaben zu überprüfen',
subheader: 'Verifizierung',
verificationFailed: 'Die Verifizierung ist fehlgeschlagen, daher benötigen wir zusätzliche Dokumente, um dich und dein Unternehmen zu überprüfen',
taxIDVerification: 'Steuer-ID-Verifizierung',
taxIDVerificationDescription: dedent(`
Bitte lade eine der folgenden Dateien hoch:
• IRS TIN/EIN-Zuweisungsschreiben
• IRS TIN/EIN-Antragsbestätigung (enthält normalerweise „Congratulations! The EIN has been successfully assigned“)
• IRS-Steuerbefreiungsschreiben mit Firmenname und EIN`),
nameChangeDocument: 'Dokument zur Namensänderung',
nameChangeDocumentDescription:
'Wenn sich der Name deines Unternehmens seit der Beantragung der TIN/EIN geändert hat, benötigen wir dieses Dokument zur Verifizierung der angegebenen Steuer-ID',
companyAddressVerification: 'Verifizierung der Unternehmensadresse',
companyAddressVerificationDescription: dedent(`
Bitte lade eine der folgenden Dateien hoch:
• Aktuelle Strom-, Wasser- oder Gasrechnung mit Firmenname und Adresse
• Kontoauszug mit Firmenname und Adresse
• Aktueller Miet- oder Leasingvertrag inkl. Unterschriftsseite mit Firmenname und aktueller Adresse
• Versicherungsnachweis mit Firmenname und Adresse
• TIN-Zuweisungsdokument mit Firmenname und Adresse`),
userAddressVerification: 'Adressverifizierung',
userAddressVerificationDescription: dedent(`
Bitte lade eine der folgenden Dateien hoch:
• Wählerregistrierungskarte
• Führerschein
• Kontoauszug
• Versorgungsrechnung`),
userDOBVerification: 'Geburtsdatumsverifizierung',
userDOBVerificationDescription: 'Bitte lade einen in den USA ausgestellten Ausweis hoch',
finishViaChat: 'Über Chat abschließen',
},
reimbursementAccountLoadingAnimation: {
oneMoment: 'Einen Moment',
explanationLine: 'Wir überprüfen gerade Ihre Angaben. Sie können in Kürze mit den nächsten Schritten fortfahren.',
Expand Down
32 changes: 32 additions & 0 deletions src/languages/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4193,6 +4193,38 @@ const translations = {
weTake: 'We take your security seriously. Please set up 2FA now to add an extra layer of protection to your account.',
secure: 'Secure your account',
},
documentsStep: {
beforeYouGo: 'Before you go, we need some documents to verify some things',
subheader: 'Verification',
verificationFailed: "The verification failed, so we'll need some extra documents to verify you and your business.",
taxIDVerification: 'Tax ID Verification',
taxIDVerificationDescription: dedent(`
Please upload one of the following files:
• IRS TIN/EIN Assignment Letter
• IRS TIN/EIN Application confirmation (Normally states "Congratulations! The EIN has been successfully assigned")
• IRS tax exemption letter that lists your company name and EIN`),
nameChangeDocument: 'Name Change Document',
nameChangeDocumentDescription: 'If your company’s name has changed since filing for the TIN/EIN we need this document to verify the Tax ID number you provided',
companyAddressVerification: 'Company address verification',
companyAddressVerificationDescription: dedent(`
Please upload one of the following files:
• Recent utility bill showing company name and address
• Bank Statement showing company name and address
• Current Lease/Rental Agreement including the signature page showing your company name and current address
• Insurance Statement showing company name and address
• TIN assignment doc showing company name and address
• Business tax return (most current) showing company name and address`),
userAddressVerification: 'Address verification',
userAddressVerificationDescription: dedent(`
Please upload one of the following files:
• Voter Registration Card
• Driver's License
• Bank Statement
• Utility Bill`),
userDOBVerification: 'Date of birth verification',
userDOBVerificationDescription: 'Please upload a US issued ID',
finishViaChat: 'Finish via chat',
},
reimbursementAccountLoadingAnimation: {
oneMoment: 'One moment',
explanationLine: "We’re taking a look at your information. You'll be able to continue with next steps shortly.",
Expand Down
31 changes: 31 additions & 0 deletions src/languages/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3992,6 +3992,37 @@ ${amount} para ${merchant} - ${date}`,
weTake: 'Nos tomamos su seguridad en serio. Por favor, configure 2FA ahora para agregar una capa adicional de protección a su cuenta.',
secure: 'Asegure su cuenta',
},
documentsStep: {
beforeYouGo: 'Antes de continuar, necesitamos algunos documentos para verificar cierta información',
subheader: 'Verificación',
verificationFailed: 'La verificación falló, por lo que necesitaremos documentos adicionales para verificarte a ti y a tu empresa',
taxIDVerification: 'Verificación del ID fiscal',
taxIDVerificationDescription: dedent(`
Por favor, sube uno de los siguientes archivos:
• Carta de asignación de TIN/EIN del IRS
• Confirmación de solicitud de TIN/EIN del IRS (normalmente indica "Congratulations! The EIN has been successfully assigned")
• Carta de exención fiscal del IRS que incluya el nombre de la empresa y el EIN`),
nameChangeDocument: 'Documento de cambio de nombre',
nameChangeDocumentDescription: 'Si el nombre de tu empresa cambió desde que solicitaste el TIN/EIN, necesitamos este documento para verificar el número de ID fiscal proporcionado',
companyAddressVerification: 'Verificación de la dirección de la empresa',
companyAddressVerificationDescription: dedent(`
Por favor, sube uno de los siguientes archivos:
• Factura reciente de servicios públicos con nombre y dirección de la empresa
• Estado de cuenta bancario con nombre y dirección de la empresa
• Contrato de arrendamiento vigente con página de firmas que muestre el nombre y la dirección actual de la empresa
• Estado de seguro con nombre y dirección de la empresa
• Documento de asignación de TIN con nombre y dirección de la empresa`),
userAddressVerification: 'Verificación de dirección',
userAddressVerificationDescription: dedent(`
Por favor, sube uno de los siguientes archivos:
• Tarjeta de registro de votante
• Licencia de conducir
• Estado de cuenta bancario
• Factura de servicios públicos`),
userDOBVerification: 'Verificación de fecha de nacimiento',
userDOBVerificationDescription: 'Por favor, sube una identificación emitida en EE. UU.',
finishViaChat: 'Finalizar por chat',
},
reimbursementAccountLoadingAnimation: {
oneMoment: 'Un momento',
explanationLine: 'Estamos verificando tu información y podrás continuar con los siguientes pasos en unos momentos.',
Expand Down
32 changes: 32 additions & 0 deletions src/languages/fr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4125,6 +4125,38 @@ ${amount} pour ${merchant} - ${date}`,
weTake: 'Nous accordons une grande importance à votre sécurité. Veuillez configurer l’authentification à deux facteurs (2FA) maintenant pour ajouter une couche de protection supplémentaire à votre compte.',
secure: 'Sécurisez votre compte',
},
documentsStep: {
beforeYouGo: 'Avant de continuer, nous avons besoin de certains documents pour vérifier certaines informations',
subheader: 'Vérification',
verificationFailed: 'La vérification a échoué, nous aurons donc besoin de documents supplémentaires pour te vérifier ainsi que ton entreprise',
taxIDVerification: 'Vérification de l’identifiant fiscal',
taxIDVerificationDescription: dedent(`
Veuillez téléverser l’un des fichiers suivants :
• Lettre d’attribution TIN/EIN de l’IRS
• Confirmation de demande TIN/EIN de l’IRS (indique généralement « Congratulations! The EIN has been successfully assigned »)
• Lettre d’exonération fiscale de l’IRS indiquant le nom de l’entreprise et l’EIN`),
nameChangeDocument: 'Document de changement de nom',
nameChangeDocumentDescription:
'Si le nom de ton entreprise a changé depuis la demande du TIN/EIN, ce document est nécessaire pour vérifier le numéro d’identification fiscale fourni',
companyAddressVerification: 'Vérification de l’adresse de l’entreprise',
companyAddressVerificationDescription: dedent(`
Veuillez téléverser l’un des fichiers suivants :
• Facture récente de services publics indiquant le nom et l’adresse de l’entreprise
• Relevé bancaire indiquant le nom et l’adresse de l’entreprise
• Contrat de location en cours incluant la page de signature avec le nom et l’adresse actuelle de l’entreprise
• Attestation d’assurance indiquant le nom et l’adresse de l’entreprise
• Document d’attribution TIN indiquant le nom et l’adresse de l’entreprise`),
userAddressVerification: 'Vérification de l’adresse',
userAddressVerificationDescription: dedent(`
Veuillez téléverser l’un des fichiers suivants :
• Carte d’inscription électorale
• Permis de conduire
• Relevé bancaire
• Facture de services publics`),
userDOBVerification: 'Vérification de la date de naissance',
userDOBVerificationDescription: 'Veuillez téléverser une pièce d’identité délivrée aux États-Unis',
finishViaChat: 'Finaliser via le chat',
},
reimbursementAccountLoadingAnimation: {
oneMoment: 'Un instant',
explanationLine: 'Nous examinons vos informations. Vous pourrez poursuivre les prochaines étapes sous peu.',
Expand Down
32 changes: 32 additions & 0 deletions src/languages/it.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4100,6 +4100,38 @@ ${amount} per ${merchant} - ${date}`,
weTake: 'Prendiamo molto sul serio la tua sicurezza. Configura ora l’autenticazione a due fattori (2FA) per aggiungere un ulteriore livello di protezione al tuo account.',
secure: 'Proteggi il tuo account',
},
documentsStep: {
beforeYouGo: 'Prima di continuare, abbiamo bisogno di alcuni documenti per verificare alcune informazioni',
subheader: 'Verifica',
verificationFailed: 'La verifica non è riuscita, quindi avremo bisogno di documenti aggiuntivi per verificare te e la tua azienda',
taxIDVerification: 'Verifica dell’ID fiscale',
taxIDVerificationDescription: dedent(`
Carica uno dei seguenti file:
• Lettera di assegnazione TIN/EIN dell’IRS
• Conferma della richiesta TIN/EIN dell’IRS (di solito indica "Congratulations! The EIN has been successfully assigned")
• Lettera di esenzione fiscale dell’IRS con nome dell’azienda ed EIN`),
nameChangeDocument: 'Documento di cambio nome',
nameChangeDocumentDescription:
'Se il nome della tua azienda è cambiato dopo la richiesta del TIN/EIN, abbiamo bisogno di questo documento per verificare il numero di ID fiscale fornito',
companyAddressVerification: 'Verifica dell’indirizzo aziendale',
companyAddressVerificationDescription: dedent(`
Carica uno dei seguenti file:
• Bolletta recente con nome e indirizzo dell’azienda
• Estratto conto bancario con nome e indirizzo dell’azienda
• Contratto di locazione attuale con pagina firme che mostri nome e indirizzo attuale dell’azienda
• Documento assicurativo con nome e indirizzo dell’azienda
• Documento di assegnazione TIN con nome e indirizzo dell’azienda`),
userAddressVerification: 'Verifica dell’indirizzo',
userAddressVerificationDescription: dedent(`
Carica uno dei seguenti file:
• Tessera elettorale
• Patente di guida
• Estratto conto bancario
• Bolletta`),
userDOBVerification: 'Verifica della data di nascita',
userDOBVerificationDescription: 'Carica un documento di identità rilasciato negli Stati Uniti',
finishViaChat: 'Completa via chat',
},
reimbursementAccountLoadingAnimation: {
oneMoment: 'Un momento',
explanationLine: 'Stiamo esaminando le tue informazioni. Potrai procedere con i prossimi passaggi a breve.',
Expand Down
31 changes: 31 additions & 0 deletions src/languages/ja.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4069,6 +4069,37 @@ ${integrationName === CONST.ONBOARDING_ACCOUNTING_MAPPING.other ? 'あなたの'
weTake: 'お客様のセキュリティを重要視しています。アカウントをさらに強固に保護するため、今すぐ2要素認証(2FA)を設定してください。',
secure: 'アカウントを保護する',
},
documentsStep: {
beforeYouGo: '続行する前に、いくつかの情報を確認するための書類が必要です',
subheader: '確認',
verificationFailed: '確認に失敗したため、追加の書類で本人および事業の確認が必要です',
taxIDVerification: '納税者番号の確認',
taxIDVerificationDescription: dedent(`
以下のいずれかの書類をアップロードしてください:
• IRS TIN/EIN 割当通知書
• IRS TIN/EIN 申請確認書(通常「Congratulations! The EIN has been successfully assigned」と記載)
• 会社名と EIN が記載された IRS の免税通知書`),
nameChangeDocument: '名称変更書類',
nameChangeDocumentDescription: 'TIN/EIN 申請後に会社名が変更された場合、提供された納税者番号を確認するためにこの書類が必要です',
companyAddressVerification: '会社住所の確認',
companyAddressVerificationDescription: dedent(`
以下のいずれかの書類をアップロードしてください:
• 会社名と住所が記載された最近の公共料金請求書
• 会社名と住所が記載された銀行取引明細書
• 署名ページを含む現行の賃貸契約書(会社名と現住所が記載されたもの)
• 会社名と住所が記載された保険証書
• 会社名と住所が記載された TIN 割当書類`),
userAddressVerification: '住所確認',
userAddressVerificationDescription: dedent(`
以下のいずれかの書類をアップロードしてください:
• 有権者登録カード
• 運転免許証
• 銀行取引明細書
• 公共料金請求書`),
userDOBVerification: '生年月日の確認',
userDOBVerificationDescription: '米国発行の身分証明書をアップロードしてください',
finishViaChat: 'チャットで完了',
},
reimbursementAccountLoadingAnimation: {
oneMoment: '少々お待ちください',
explanationLine: '現在、お客様の情報を確認しています。まもなく次のステップに進めるようになります。',
Expand Down
Loading
Loading