Allow an SXCHNGE customer to submit their legal profile, ID document photo and selfie holding that ID for review in the existing Sendico backoffice. Submission is optional during onboarding and remains available later from the account. Approval upgrades the customer's actual server limits.
Approach
Use the existing public Sendico integration and customer subject binding. Keep profile/proofs private and customer-scoped, preserve stable retry keys, and return authoritative review status and exact Limits projections. Compose real adapters through DTO → mapper → service → model → provider → UI, with EN/RU states and meaningful journey measurement.
Acceptance criteria
Customers can provide legal profile, ID photo and selfie during onboarding.
Customers can skip collection and upload later from their account.
Authenticated backend requests bind proofs to the current customer and protect other customers' data.
Sendico receives immutable profile/proof assertions for human review in its existing backoffice.
Pending/correction/rejection keep basic limits; approval only reports upgraded limits after the policy is effective.
Stable retries, errors, session changes and interrupted limits upgrades have explicit behavior.
Architecture, UX and measurement reviews are complete; generated outputs stay ignored.
Tests, lint, formatting and Flutter analysis pass; contribution is committed, pushed and submitted for review.
Stacked on sign-up Facts PR #47, which must merge first. Requires Sendico PR #2886 and its existing storage/policy/provider configuration deployed before enabling this flow.
Passed: GOFLAGS=-p=1 make test (backend race tests and all frontend suites, 79 app tests), make lint-backend, changed-Dart formatting, app/KYC flutter analyze, focused KYC tests (20) and focused Go checks. An initial parallel run encountered an existing Testcontainers reaper deadline; serial Go package execution passed without weakening checks.
Durable contracts, rollout, telemetry and limitations: docs/identity-verification.md and docs/implementation.md. No production deployment, live proof, merge or optional security scan performed. Unrelated notifications configuration is excluded.
### Goal
Allow an SXCHNGE customer to submit their legal profile, ID document photo and selfie holding that ID for review in the existing Sendico backoffice. Submission is optional during onboarding and remains available later from the account. Approval upgrades the customer's actual server limits.
### Approach
Use the existing public Sendico integration and customer subject binding. Keep profile/proofs private and customer-scoped, preserve stable retry keys, and return authoritative review status and exact Limits projections. Compose real adapters through DTO → mapper → service → model → provider → UI, with EN/RU states and meaningful journey measurement.
### Acceptance criteria
- [x] Customers can provide legal profile, ID photo and selfie during onboarding.
- [x] Customers can skip collection and upload later from their account.
- [x] Authenticated backend requests bind proofs to the current customer and protect other customers' data.
- [x] Sendico receives immutable profile/proof assertions for human review in its existing backoffice.
- [x] Pending/correction/rejection keep basic limits; approval only reports upgraded limits after the policy is effective.
- [x] Stable retries, errors, session changes and interrupted limits upgrades have explicit behavior.
- [x] Architecture, UX and measurement reviews are complete; generated outputs stay ignored.
- [x] Tests, lint, formatting and Flutter analysis pass; contribution is committed, pushed and submitted for review.
### Notes
Delivered in [PR #49](https://git.sendico.io/tech/sxchnge/pulls/49), branch `identity-verification-48`; implementation commit `1354551`. Owner: tech; project: SXCHNGE; labels: backend/frontend. Secondary scope: shared KYC package and app.
Stacked on [sign-up Facts PR #47](https://git.sendico.io/tech/sxchnge/pulls/47), which must merge first. Requires [Sendico PR #2886](https://git.sendico.io/tech/sendico/pulls/2886) and its existing storage/policy/provider configuration deployed before enabling this flow.
Passed: `GOFLAGS=-p=1 make test` (backend race tests and all frontend suites, 79 app tests), `make lint-backend`, changed-Dart formatting, app/KYC `flutter analyze`, focused KYC tests (20) and focused Go checks. An initial parallel run encountered an existing Testcontainers reaper deadline; serial Go package execution passed without weakening checks.
Durable contracts, rollout, telemetry and limitations: `docs/identity-verification.md` and `docs/implementation.md`. No production deployment, live proof, merge or optional security scan performed. Unrelated notifications configuration is excluded.
Updated PR #49 and durable rollout docs to reflect the coordinated Sendico contributions: apply #2886 before #2887, then deploy the combined Sendico services/backoffice before SXCHNGE. Existing SXCHNGE base dependency remains PR #47.
The shared auth-boundary fix, common Limits hardening and full dependent frontend/backend checks have passed in #2886. #2887 owns combined registration/navigation and the proof-case routing/assignment guards, with combined checks ongoing in its owning chat. No public SXCHNGE contract changed. This repository's follow-up is documentation-only (5d67c25), with consistency and diff checks passed; unrelated local notifications configuration remains excluded.
Updated [PR #49](https://git.sendico.io/tech/sxchnge/pulls/49) and durable rollout docs to reflect the coordinated Sendico contributions: apply [#2886](https://git.sendico.io/tech/sendico/pulls/2886) before [#2887](https://git.sendico.io/tech/sendico/pulls/2887), then deploy the combined Sendico services/backoffice before SXCHNGE. Existing SXCHNGE base dependency remains PR #47.
The shared auth-boundary fix, common Limits hardening and full dependent frontend/backend checks have passed in #2886. #2887 owns combined registration/navigation and the proof-case routing/assignment guards, with combined checks ongoing in its owning chat. No public SXCHNGE contract changed. This repository's follow-up is documentation-only (`5d67c25`), with consistency and diff checks passed; unrelated local notifications configuration remains excluded.
Reconciliation completed and PR descriptions/rollout records updated. Sendico #2886 merged at 9ec535dc9; #2887 is rebased and pushed at ceaab0187, with both review providers/services/KYC destinations preserved and proof cases blocked from generic login linking/assignment. Shared Limits code is identical across both contributions. Combined backend tests/lint, Backoffice analysis/formatting, architecture checks, MongoDB integrations and 637 Backoffice tests (three existing skips) passed. Full dependent frontend/Wasm checks passed in #2886. Existing shared/product analyzer style infos are documented there. CI pipeline3593 for #2887 is queued; its owning chat handles the separately authorized conditional merge. SXCHNGE #49 has unchanged public contracts and updated dependencies; no deployment.
Reconciliation completed and PR descriptions/rollout records updated. Sendico #2886 merged at `9ec535dc9`; #2887 is rebased and pushed at `ceaab0187`, with both review providers/services/KYC destinations preserved and proof cases blocked from generic login linking/assignment. Shared Limits code is identical across both contributions. Combined backend tests/lint, Backoffice analysis/formatting, architecture checks, MongoDB integrations and 637 Backoffice tests (three existing skips) passed. Full dependent frontend/Wasm checks passed in #2886. Existing shared/product analyzer style infos are documented there. CI pipeline3593 for #2887 is queued; its owning chat handles the separately authorized conditional merge. SXCHNGE #49 has unchanged public contracts and updated dependencies; no deployment.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Goal
Allow an SXCHNGE customer to submit their legal profile, ID document photo and selfie holding that ID for review in the existing Sendico backoffice. Submission is optional during onboarding and remains available later from the account. Approval upgrades the customer's actual server limits.
Approach
Use the existing public Sendico integration and customer subject binding. Keep profile/proofs private and customer-scoped, preserve stable retry keys, and return authoritative review status and exact Limits projections. Compose real adapters through DTO → mapper → service → model → provider → UI, with EN/RU states and meaningful journey measurement.
Acceptance criteria
Notes
Delivered in PR #49, branch
identity-verification-48; implementation commit1354551. Owner: tech; project: SXCHNGE; labels: backend/frontend. Secondary scope: shared KYC package and app.Stacked on sign-up Facts PR #47, which must merge first. Requires Sendico PR #2886 and its existing storage/policy/provider configuration deployed before enabling this flow.
Passed:
GOFLAGS=-p=1 make test(backend race tests and all frontend suites, 79 app tests),make lint-backend, changed-Dart formatting, app/KYCflutter analyze, focused KYC tests (20) and focused Go checks. An initial parallel run encountered an existing Testcontainers reaper deadline; serial Go package execution passed without weakening checks.Durable contracts, rollout, telemetry and limitations:
docs/identity-verification.mdanddocs/implementation.md. No production deployment, live proof, merge or optional security scan performed. Unrelated notifications configuration is excluded.identity-verification-48to identity-verification-48Updated PR #49 and durable rollout docs to reflect the coordinated Sendico contributions: apply #2886 before #2887, then deploy the combined Sendico services/backoffice before SXCHNGE. Existing SXCHNGE base dependency remains PR #47.
The shared auth-boundary fix, common Limits hardening and full dependent frontend/backend checks have passed in #2886. #2887 owns combined registration/navigation and the proof-case routing/assignment guards, with combined checks ongoing in its owning chat. No public SXCHNGE contract changed. This repository's follow-up is documentation-only (
5d67c25), with consistency and diff checks passed; unrelated local notifications configuration remains excluded.Reconciliation completed and PR descriptions/rollout records updated. Sendico #2886 merged at
9ec535dc9; #2887 is rebased and pushed atceaab0187, with both review providers/services/KYC destinations preserved and proof cases blocked from generic login linking/assignment. Shared Limits code is identical across both contributions. Combined backend tests/lint, Backoffice analysis/formatting, architecture checks, MongoDB integrations and 637 Backoffice tests (three existing skips) passed. Full dependent frontend/Wasm checks passed in #2886. Existing shared/product analyzer style infos are documented there. CI pipeline3593 for #2887 is queued; its owning chat handles the separately authorized conditional merge. SXCHNGE #49 has unchanged public contracts and updated dependencies; no deployment.