JVM client OFX library
Scala Java
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
project
src
.gitignore
.travis.yml
LICENSE
README.md
assembly.sbt
build.sbt

README.md

scala-ofx

A JVM client library for communicating with financial institutions over OFX.

This is an extremely skeletal implementation right now.

Loosely based / inspired by https://github.com/wesabe/lynofx

Build

Build Status

compile: sbt compile test: sbt test single jar: sbt assembly

Usage

val pr = new PrettyPrinter(80, 2)

val user = User("username", "password")
val bank = Bank(
  bootstrapUrl = "http://www.example.com",
  fiOrg = "EXAMPLE",
  fiId = "1234",
  appId = "Money",
  appVer = "1400")

// Returns the raw sign-on response. Useful for debugging authentication.
val signon: OfxMessage = bc.signOn()
println(pr format signon.ofx)

// Another raw api call. Returns the bank's ofx profile.
val profile: OfxMessage = bc.profile()
println(pr format profile.ofx)

// Get information about the account
val info: Seq[BankAccountInfo] = bc.accountInfo()

// Download Bank statements:

val accounts: Seq[Account] = Seq(
  Account(routing = "12345", account = "09871", SAVINGS),
  Account(routing = "12345", account = "09871", CHECKING))
val statements: BankStatementResponse = bc.bankStatements(accounts, Options.start)
// request errors are available in statements.errors

for (statement <- statements.statements) {
  println(s"Balance: ${statement.availableBalance}")
  for (transaction <- statement.transactions) {
    println(s"date: ${transaction.posted}, type: ${transaction.`type`}, amount: ${transaction.amount}, payee: ${transaction.name}, memo: ${transaction.memo}")
  }
}

Example CLI

sbt
> run -s 2013-01-01 -c src/main/config/config.yaml -b capitalone360:${USERNAME}:${PASSWORD} -a capitalone360:${ROUTING}:${ACCT_NUM]:SAVINGS -v

# or
sbt assembly
java -jar target/scala-2.10/scalaofx-assembly-1.0.jar -s 2013-01-01 -c src/main/config/config.yaml -b capitalone360:${USERNAME}:${PASSWORD} -a capitalone360:${ROUTING}:${ACCT_NUM]:SAVINGS -v