{% extends "base.html" %} {% block title %} — Step 6: Webhooks & Events{% endblock %} {% block stepper %}
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.
Webhook API fejl
{{ error }}
GET /api/v1/webhooks
{{ curl_list }}
⚠ Sample Data
{% endif %}{{ result_webhooks | tojson(indent=2) }}
{% else %}
Ingen webhooks registreret endnu.
{% endif %}POST /api/v1/webhooks
{{ curl_register }}
⚠ Sample Data
{% endif %}{{ webhook_registered | tojson(indent=2) }}
{% else %}
Webhook ikke registreret.
{% endif %}Sådan ser en event ud når Tink poster til dit endpoint
{
"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
@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"}
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.