From 729331b0fa9edb2920d6353d9ed8ff7ee2d40257 Mon Sep 17 00:00:00 2001 From: Navid Filsaraee Date: Tue, 6 Oct 2026 18:43:57 +0330 Subject: [PATCH] feat: add bank deposit admin RPCs --- wallet/v1/internal_srv.proto | 5 +++++ wallet/v1/msg.proto | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/wallet/v1/internal_srv.proto b/wallet/v1/internal_srv.proto index 6e0cbf4..b9e621a 100644 --- a/wallet/v1/internal_srv.proto +++ b/wallet/v1/internal_srv.proto @@ -31,4 +31,9 @@ service InternalWalletSrv { rpc AdminDeactivateAsset(AdminDeactivateAssetReq) returns (base.v1.StatusRes); rpc AdminApproveIRTWithdrawal(AdminApproveIRTWithdrawalReq) returns (base.v1.StatusRes); + + // Bank statement receipts are checked and confirmed through the wallet owner. + // Confirmation is idempotent by bank_transaction_number. + rpc AdminCheckBankDeposit(AdminBankDepositReq) returns (AdminBankDepositRes); + rpc AdminConfirmBankDeposit(AdminBankDepositReq) returns (AdminBankDepositRes); } diff --git a/wallet/v1/msg.proto b/wallet/v1/msg.proto index c7dc8ca..8615518 100644 --- a/wallet/v1/msg.proto +++ b/wallet/v1/msg.proto @@ -236,6 +236,24 @@ message AdminApproveIRTWithdrawalReq { int64 actor_user_id = 3; } +message AdminBankDepositReq { + string bank_transaction_number = 1; + string depositor_id = 2; // ten-digit national ID followed by the two-digit checksum + int64 amount_rial = 3; + string paid_at = 4; // RFC3339 + int64 user_id = 5; // wallet verifies this user's national ID against depositor_id + int64 actor_user_id = 6; +} + +message AdminBankDepositRes { + int64 user_id = 1; + string national_id = 2; + int64 transaction_id = 3; // zero until confirmed + bool already_registered = 4; + string amount_irt = 5; // exact decimal amount + string status = 6; +} + /* BNPL - not really but close name */