{% extends "base.html" %} {% block title %}Plaid Bank Sync{% endblock %} {% block page_title %}Plaid Bank Sync{% endblock %} {% block content %} {% if not plaid_configured %}
Plaid is not configured. Add PLAID_CLIENT_ID, PLAID_SECRET, and PLAID_ENV to your .env file and restart the app.
{% endif %}
Connect a Bank Account
Plaid supports 12,000+ US financial institutions — checking, savings, credit cards, and investments. Trial accounts work in sandbox and development environments.
{% if items %} {% for item in items %}
{{ item.institution_name }}
{{ item.accounts.filter_by(is_active=True).count() }} account(s) connected {% if item.last_synced_at %}· Last synced {{ item.last_synced_at.strftime('%b %d, %Y %H:%M') }}{% endif %}
Sync Transactions
{% set accts = item.accounts.filter_by(is_active=True).all() %} {% if accts %}
{% for pa in accts %} {% endfor %}
Account Type Mapped to Last Sync Credit Card Billing Actions
{{ pa.display_name }}
{{ pa.account_type | title }} · {{ pa.account_subtype | replace('_',' ') | title }}
{{ pa.account_type | title }} {% if pa.pfm_account %} {{ pa.pfm_account.name }} {% else %} Map Account {% endif %} {{ pa.last_sync_date.strftime('%b %d') if pa.last_sync_date else '—' }} {% if pa.account_type == 'credit' %} {% if pa.cc_due_date %} {% set days_left = (pa.cc_due_date - today).days %}
Due {{ pa.cc_due_date.strftime('%b %d') }} {% if days_left <= 0 %} · Overdue! {% elif days_left <= 3 %} · {{ days_left }}d left {% else %} · {{ days_left }}d {% endif %}
{% if pa.cc_minimum_payment %}
Min: {{ pa.cc_minimum_payment | currency }}
{% endif %} {% else %} {% endif %} {% else %} N/A {% endif %}
{% if pa.pfm_account_id %} {% endif %}
{% endif %}
{% endfor %} {% else %}
No banks connected yet
Click "Connect Bank" to link your first account via Plaid.
{% endif %} {% endblock %} {% block extra_js %} {% endblock %}