Skip to main content

Crate fints

Crate fints 

Source
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

  1. Protocol layer (protocol): Typestate Dialog<S> — the dialog’s auth state is in the type system. Business ops on an unauthenticated dialog = compile error.

  2. Workflow layer (workflow): Bank-specific workflows via BankOps trait.

  3. 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.