{% extends "base.html" %} {% block title %} — Step 6: Webhooks & Events{% endblock %} {% block stepper %}
{% set step_names = ["Auth", "Opret Bruger", "Tilslut Bank", "Konti", "Transaktioner", "Webhooks"] %} {% for i in range(1, 7) %} {{ i }} {{ step_names[i-1] }} {% if i < 6 %} {% endif %} {% endfor %}
{% endblock %} {% block content %}
6

Webhooks & Real-time Events

Push-notifikationer til din backend

Registrér dit endpoint hos Tink — så sender de automatisk en HTTP POST til dig hver gang en transaktion bogføres, opdateres eller en konto ændres. Zero polling.

{% if error %}

Webhook API fejl

{{ error }}
{% endif %}

Hvordan webhooks virker

Din app Brugeren kobler bank
Tink Henter transaktioner
POST /webhooks/tink Dit endpoint modtager event
Din app Opdaterer UI / notifikation
Registrerede webhooks GET /api/v1/webhooks
app token
cURL
{{ curl_list }}
{% if result_webhooks %} {% if is_demo %}

⚠ Sample Data

{% endif %}
{{ result_webhooks | tojson(indent=2) }}
{% else %}

Ingen webhooks registreret endnu.

{% endif %}
Registrér webhook endpoint POST /api/v1/webhooks
registreret ✓
cURL
{{ curl_register }}
{% if webhook_registered %} {% if is_demo %}

⚠ Sample Data

{% endif %}
{{ webhook_registered | tojson(indent=2) }}
{% else %}

Webhook ikke registreret.

{% endif %}
Sample Webhook Payload

Sådan ser en event ud når Tink poster til dit endpoint

incoming POST
{
  "event": "account-booked-transaction:created",
  "context": {
    "userId": "a8b3c2d1-...",
    "externalUserId": "moneycapp-user-42"
  },
  "content": {
    "id": "tx_9f3a2b1c...",
    "accountId": "acc_7e1d4f2a...",
    "amount": {
      "currencyCode": "DKK",
      "value": { "scale": 2, "unscaledValue": "-24900" }
    },
    "dates": {
      "booked": "2025-05-22",
      "value": "2025-05-22"
    },
    "descriptions": {
      "display": "Netto Albertslund",
      "original": "NETTO ALBERTSLUND"
    },
    "merchantInformation": {
      "merchantCategoryCode": "5411",
      "merchantName": "Netto"
    },
    "status": "BOOKED",
    "types": { "type": "DEFAULT" }
  }
}

Dit webhook modtager endpoint er live

POST {{ app_base_url }}/webhooks/tink
Se receiver kode
@router.post("/webhooks/tink")
async def tink_webhook(request: Request):
    payload = await request.json()
    event_type = payload.get("event", "unknown")
    content = payload.get("content", {})
    
    # Her ville MoneyCapp opdatere sin database,
    # sende push-notifikation, opdatere UI via SSE etc.
    
    print(f"Tink event: {event_type}")
    print(f"Transaction ID: {content.get('id')}")
    print(f"Amount: {content.get('amount')}")
    
    return {"status": "received"}
🎉

Det var hele flowet

Fra brugeroprettelse over live bankdata til real-time webhooks — alt via Tink API.

Vi har vist: auth → bruger → bank-tilslutning → konti (v2) → transaktioner (v2) → webhooks. Det er præcis hvad MoneyCapp mangler for at gøre deres integration robust.

↺ Kør demo igen Tink Docs →
← Step 5
{% endblock %}