mintable icon indicating copy to clipboard operation
mintable copied to clipboard

Teller import integration

Open arithmetric opened this issue 1 year ago • 12 comments

This PR adds support for using the Teller service for importing transactions from bank accounts.

When I tried using Mintable with the Plaid integration, I was only able to connect with accounts at one financial institution that I use. With the Teller integration, I'm able to connect to all of the accounts I wanted. So far I have been able to sign up and use Teller on a small scale for free.

See the account linking interface in Teller: Linking accounts with Teller

I've included documentation below, but the set up process is very similar to Plaid. First run mintable teller-setup to provide the account ID and credentials (for Teller, certificate files). Then run mintable teller-account-setup to link your accounts. Finally run mintable fetch to import the transactions.

The Teller and Plaid integrations can both be used for importing from different accounts.

arithmetric avatar Apr 14 '23 19:04 arithmetric

Nice. No issues so far that aren't of my own creation. Wish Teller supported more banks, especially Schwab.

Doesn't support github actions due to needing the files. Tried getting github actions to turn a secret into a file, but I think I was having issues with multilines. An alternative is having the cert/key as a string with \n for newlines.

Will be messing with it more.

ericcater avatar Apr 18 '23 22:04 ericcater

@ericcater Thanks for the review!

One approach that might help with the storing the certificate files in secrets for GitHub Actions is to encode the certificate file as a Base64 string. See: https://stackoverflow.com/a/66603047

arithmetric avatar Apr 20 '23 14:04 arithmetric

Thanks for this PR @arithmetric 🥰

@ericcater - we just added support for hundreds more FIs recently. We're working hard to get the total number closer to that of Plaid and others over the next few months. Schwab is coming soon!

stevegraham avatar Jun 21 '23 19:06 stevegraham

this worked great for me, awesome job @arithmetric. I hope this gets merged asap!

UncleGravity avatar Jul 02 '23 13:07 UncleGravity

Great idea; love the integration. This worked for me, up until adding an account. Clicking "Link an account" seems to have no effect.

mcc0nkie avatar Jul 27 '23 00:07 mcc0nkie

How do I run this? I cloned the branch from arithmetric's repo. Thanks.

eliluong avatar Jul 27 '23 16:07 eliluong

How do I run this? I cloned the branch from arithmetric's repo. Thanks.

Normally, these are the steps you'd take:

  1. Make sure you have npm, nodejs, and typescript (I use nvm to manage these for me, but you can search online for how to install these for your OS)
  2. cd into the cloned branch
  3. run npm install -- this installs the dependencies for the project
  4. run npm run build -- this builds your project
  5. run npm link so you can use the mintable command in the Terminal
  6. Follow the directions above for setting up Teller accounts or the instructions in the original repo for setting up Plaid, google sheets integration, etc.

To remove, you would follow these steps:

  1. run npm unlink mintable -g -- this removes the mintable command from your environment (i.e. removes the ability to run mintable in your Terminal)
  2. delete the cloned branch (i.e. in Debian/Ubuntu you'd run sudo rm -r /path/to/your/cloned/branch (-r says to remove directories, not just files)

I've had my own issues getting this to run the Teller integration after installation, but I'll post a solution if I have time to work through the code.

mcc0nkie avatar Jul 27 '23 17:07 mcc0nkie

I've had my own issues getting this to run the Teller integration after installation, but I'll post a solution if I have time to work through the code.

Thanks for explaining! I was missing typescript. Do you know how I would run mintable without having to use the link command? I tried npm run build but it did not run anything.

I was able to connect to Teller, and went through the account enrollment process, but like your issue, I was not able to fully complete account linking.

(node:5935) UnhandledPromiseRejectionWarning: Error: EISDIR: illegal operation on a directory, read
    at Object.readSync (fs.js:592:3)
    at tryReadSync (fs.js:366:20)
    at Object.readFileSync (fs.js:403:19)
    at /home/user/Downloads/mintable-teller/mintable/lib/integrations/teller/tellerIntegration.js:61:32
    at new Promise (<anonymous>)
    at TellerIntegration.tellerApi (/home/user/Downloads/mintable-teller/mintable/lib/integrations/teller/tellerIntegration.js:57:20)
    at TellerIntegration.<anonymous> (/home/user/Downloads/mintable-teller/mintable/lib/integrations/teller/tellerIntegration.js:109:59)
    at step (/home/user/Downloads/mintable-teller/mintable/lib/integrations/teller/tellerIntegration.js:33:23)
    at Object.next (/home/user/Downloads/mintable-teller/mintable/lib/integrations/teller/tellerIntegration.js:14:53)
    at /home/user/Downloads/mintable-teller/mintable/lib/integrations/teller/tellerIntegration.js:8:71
    at new Promise (<anonymous>)
    at __awaiter (/home/user/Downloads/mintable-teller/mintable/lib/integrations/teller/tellerIntegration.js:4:12)
    at /home/user/Downloads/mintable-teller/mintable/lib/integrations/teller/tellerIntegration.js:99:83
    at Layer.handle [as handle_request] (/home/user/Downloads/mintable-teller/mintable/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/user/Downloads/mintable-teller/mintable/node_modules/express/lib/router/route.js:137:13)
    at Route.dispatch (/home/user/Downloads/mintable-teller/mintable/node_modules/express/lib/router/route.js:112:3)
(Use `node --trace-warnings ...` to show where the warning was created)
(node:5935) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2)
(node:5935) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

eliluong avatar Jul 27 '23 17:07 eliluong

Copying over my comment from the associated issue:

Thanks @arithmetric! I just got this setup and it was very simple, worked very easily!

When I ran fetch, the initial transactions failed due to timeout. But after I re-ran mintable fetch 3 times, it finally worked for all my accounts!

jsharf avatar Aug 09 '23 18:08 jsharf

Thanks for adding this!

Do you have guidance on safely adding the certificate to Github actions?

tlcaputi avatar Sep 12 '23 20:09 tlcaputi

@ericcater - we just added support for hundreds more FIs recently. We're working hard to get the total number closer to that of Plaid and others over the next few months. Schwab is coming soon!

Curious what this comment meant last year. When I try to link Schwab or Chase using Plaid, I get an immediate "Something went wrong".

spencerogden avatar Jan 22 '24 23:01 spencerogden

This is amazing! Great work @arithmetric 🎉

rajkumaar23 avatar Feb 21 '24 03:02 rajkumaar23