Expand description
§fints — Native Rust FinTS 3.0 PinTan Client
A pure Rust implementation of the FinTS 3.0 (formerly HBCI) banking protocol for German online banking.
§Architecture
-
Protocol layer (
protocol): TypestateDialog<S>— the dialog’s auth state is in the type system. Business ops on an unauthenticated dialog = compile error. -
Workflow layer (
workflow): Bank-specific workflows viaBankOpstrait. -
Bank modules (
dkb): High-level, bank-specific APIs.
§DKB — Quick start
use fints::{dkb, Account, UserId, Pin, ProductId};
let (session, challenge) = dkb::connect(
&UserId::new("user"), &Pin::new("pin"), &ProductId::new("PRODUCT_ID"), None,
).await?;
// User confirms pushTAN in banking app...
let account = Account::new("DE123...", "BYLADEM1001")?; // BIC required!
let data = session.fetch(&account, 365).await?;
println!("Balance: {:?}, {} transactions", data.balance, data.transactions.len());§Generic bank access
use fints::{Flow, UserId, Pin, ProductId};
let (mut flow, challenge) = Flow::initiate(
"12030000", &UserId::new("user"), &Pin::new("pin"), &ProductId::new("PRODUCT_ID"),
None, None, None,
).await?;
let result = flow.confirm_and_fetch("DE123...", "BYLADEM...", 365).await?;Re-exports§
pub use flow::Flow;pub use flow::ChallengeInfo;pub use flow::SyncResult;pub use flow::FetchOptions;pub use workflow::BankOps;pub use workflow::AnyBank;pub use workflow::Dkb;pub use workflow::GenericBank;pub use workflow::bank_ops;pub use workflow::bank_ops_with_config;pub use workflow::InitiateOutcome;pub use workflow::InitiateResult;pub use workflow::InitiateNoTanResult;pub use workflow::FetchResult;pub use workflow::FetchOpts;pub use protocol::Dialog;pub use protocol::Response;pub use protocol::TanChallenge;pub use protocol::BankParams;pub use protocol::Account;pub use protocol::New;pub use protocol::Synced;pub use protocol::Open;pub use protocol::TanPending;pub use protocol::InitResult;pub use protocol::SendResult;pub use protocol::PollResult;pub use protocol::BalanceResult;pub use protocol::TransactionResult;pub use protocol::TransactionPage;pub use protocol::HoldingsResult;pub use protocol::HoldingsPage;pub use types::AccountBalance;pub use types::SepaAccount;pub use types::Transaction;pub use types::TransactionStatus;pub use types::TanMethod;pub use types::SecurityHolding;pub use types::Isin;pub use types::Wkn;pub use types::Blz;pub use types::UserId;pub use types::Pin;pub use types::SystemId;pub use types::ProductId;pub use types::DialogId;pub use types::SecurityFunction;pub use types::TaskReference;pub use types::SegmentType;pub use types::TanMediumName;pub use types::TouchdownPoint;pub use types::SegmentRef;pub use types::Currency;pub use types::Iban;pub use types::Bic;pub use types::TanProcess;pub use types::ResponseCodeKind;pub use types::ResponseCode;pub use types::BankName;pub use types::FinTSUrl;pub use types::ChallengeText;pub use types::HhdUcData;pub use types::Mt940Data;pub use error::FinTSError;pub use error::Result;pub use banks::BankConfig;pub use banks::all_banks;pub use banks::bank_by_blz;pub use debug::DecodedMessage;pub use debug::DecodedSegment;pub use debug::VerbosityLevel;pub use debug::decode_message;pub use debug::format_decoded;pub use audit::AuditReport;pub use audit::Violation;pub use audit::ViolationSeverity;pub use audit::audit_client_message;pub use audit::audit_server_response;
Modules§
- audit
- FinTS 3.0 protocol compliance auditing.
- banks
- Bank registry: known German banks with their FinTS endpoint URLs.
- banks_
generated - debug
- Protocol debugging and wire format inspection utilities.
- dkb
- DKB (Deutsche Kreditbank) high-level API.
- error
- flow
- High-level Flow API for the GraphQL layer.
- protocol
- FinTS 3.0 Protocol State Machine (spec-aligned).
- types
- FinTS data types and Data Element Group definitions.
- workflow
- Bank workflow trait and DKB implementation.