Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Teller import integration #156

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

arithmetric
Copy link

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.

@ericcater
Copy link
Collaborator

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.

@arithmetric
Copy link
Author

@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

@stevegraham
Copy link

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!

@UncleGravity
Copy link

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

@mcc0nkie
Copy link

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

@eliluong
Copy link

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

@mcc0nkie
Copy link

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.

@eliluong
Copy link

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.

@jsharf
Copy link

jsharf commented Aug 9, 2023

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!

@tlcaputi
Copy link

tlcaputi commented Sep 12, 2023

Thanks for adding this!

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

@spencerogden
Copy link

@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".

@rajkumaar23
Copy link

This is amazing! Great work @arithmetric 🎉

Repository owner deleted a comment from paralin Apr 26, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

10 participants