Din fakturauppföljning havererar på samma ställe varje månad: kvitton kommer i fem olika format, någon matar in totalsummor manuellt och statusen ”betald” blir en gissning.
Ekonomiansvariga känner det vid bokslut. Driftsansvariga märker det när leverantörer börjar mejla ”någon uppdatering?”. Till och med en liten byråägare hamnar till slut i godkännandeloopen eftersom processen är för rörig. Den här automationen för Notion Slack approvals stramar upp hela flödet.
Du kommer att routa fakturor in i Notion med felfria fält, fånga dubbletter och bara skicka Slack-godkännanden när något ser fel ut. Nedan ser du vad arbetsflödet gör, vad du behöver och hur du kör det stabilt.
Så fungerar automationen
Här är hela arbetsflödet du kommer att sätta upp:
n8n Workflow Template: Notion + Slack: godkänn fakturor med ett klick
flowchart LR
subgraph sg0["Slack Flow"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Format Check"]
n1@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check Format", pos: "b", h: 48 }
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Take Binary Files for Document"]
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>OCR Space Parse1"]
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Code"]
n5@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check parsing Error3", pos: "b", h: 48 }
n6@{ icon: "mdi:robot", form: "rounded", label: "Basic LLM Chain", pos: "b", h: 48 }
n7@{ icon: "mdi:brain", form: "rounded", label: "Anthropic Chat Model4", pos: "b", h: 48 }
n8["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Cleans AI Response"]
n9["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Internal Check Duplicate Inv.."]
n10["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Slack Trigger"]
n11["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Merge with Original Data"]
n12["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Merge Data Value into One Key"]
n13@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Decide Fate for Data", pos: "b", h: 48 }
n14["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Create Query for DB"]
n15["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Check DB Invoice"]
n16["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Merge Items Invoice"]
n17["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/notion.dark.svg' width='40' height='40' /></div><br/>Send to Source File Invoice 1"]
n18["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Prepare Line Items before send"]
n19@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Decide Fate", pos: "b", h: 48 }
n20["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/notion.dark.svg' width='40' height='40' /></div><br/>Create new Invoice Unpaid"]
n21["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/notion.dark.svg' width='40' height='40' /></div><br/>Add Receipt into Cashflow"]
n22["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/notion.dark.svg' width='40' height='40' /></div><br/>Update Invoice to Paid Fully"]
n23["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/notion.dark.svg' width='40' height='40' /></div><br/>Send to Source File Invoice 2"]
n24["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/notion.dark.svg' width='40' height='40' /></div><br/>Add Receipt into Cashflow Pa.."]
n25["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/notion.dark.svg' width='40' height='40' /></div><br/>Create new Invoice Paid Full"]
n26["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/notion.dark.svg' width='40' height='40' /></div><br/>Send to Archive Source File .."]
n27["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/notion.dark.svg' width='40' height='40' /></div><br/>Archive Invoice"]
n28@{ icon: "mdi:cog", form: "rounded", label: "Wait", pos: "b", h: 48 }
n29["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Send a message"]
n30["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/notion.dark.svg' width='40' height='40' /></div><br/>Send to Archive Source File .."]
n31["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/notion.dark.svg' width='40' height='40' /></div><br/>Archive Invoice Duplicate"]
n32["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Prepare Archive Duplicate It.."]
n33["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/notion.dark.svg' width='40' height='40' /></div><br/>Send to Source File Invoice 3"]
n34["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/notion.dark.svg' width='40' height='40' /></div><br/>Add Receipt into Cashflow Pa.."]
n35@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Approval Check", pos: "b", h: 48 }
n36["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/notion.dark.svg' width='40' height='40' /></div><br/>Add Receipt into Cashflow1"]
n37["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/notion.dark.svg' width='40' height='40' /></div><br/>Update Invoice to Paid Fully 1"]
n38["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/notion.dark.svg' width='40' height='40' /></div><br/>Create new Invoice Paid 3"]
n39["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Take Invoice Details 2"]
n40["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Take Invoice Details 1"]
n41["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/notion.dark.svg' width='40' height='40' /></div><br/>Update Invoice to Paid Fully "]
n42["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/notion.dark.svg' width='40' height='40' /></div><br/>Send to Source File Invoice "]
n43["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/notion.dark.svg' width='40' height='40' /></div><br/>Create new Invoice Paid "]
n44["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/notion.dark.svg' width='40' height='40' /></div><br/>Archive Invoice 1"]
n45["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Take Invoice Details 3"]
n46@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check DB Exist 1", pos: "b", h: 48 }
n47@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check DB Exist 2", pos: "b", h: 48 }
n48["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/notion.dark.svg' width='40' height='40' /></div><br/>Send to Source File Invoice 4"]
n49["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/notion.dark.svg' width='40' height='40' /></div><br/>Add Receipt into Cashflow Pa.."]
n50["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/notion.dark.svg' width='40' height='40' /></div><br/>Create new Invoice Paid Part.."]
n51["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/notion.dark.svg' width='40' height='40' /></div><br/>Add Receipt into Cashflow2"]
n52["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/notion.dark.svg' width='40' height='40' /></div><br/>Update Invoice to Paid Parti.."]
n53@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check parsing Error2", pos: "b", h: 48 }
n54["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>OCR Space Parse"]
n55["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Take Binary Files"]
n56@{ icon: "mdi:location-exit", form: "rounded", label: "Stop and Error", pos: "b", h: 48 }
n57@{ icon: "mdi:location-exit", form: "rounded", label: "Stop and Error1", pos: "b", h: 48 }
n58@{ icon: "mdi:cog", form: "rounded", label: "Aggregate1", pos: "b", h: 48 }
n59["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Send Duplicate Notification"]
n60@{ icon: "mdi:cog", form: "rounded", label: "Aggregate", pos: "b", h: 48 }
n61@{ icon: "mdi:cog", form: "rounded", label: "Aggregate2", pos: "b", h: 48 }
n62["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Notify New Invoice with Rece.."]
n63["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Notify New Invoice"]
n64@{ icon: "mdi:cog", form: "rounded", label: "Aggregate3", pos: "b", h: 48 }
n65["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Notify Update Invoice"]
n66@{ icon: "mdi:cog", form: "rounded", label: "Aggregate4", pos: "b", h: 48 }
n67@{ icon: "mdi:cog", form: "rounded", label: "Aggregate5", pos: "b", h: 48 }
n68@{ icon: "mdi:cog", form: "rounded", label: "Aggregate6", pos: "b", h: 48 }
n69["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Notify Update Invoice Partia.."]
n70["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Notify Create Invoice Partia.."]
n71["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Notify Invoice Archived"]
n72@{ icon: "mdi:cog", form: "rounded", label: "Aggregate8", pos: "b", h: 48 }
n73["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Notify Invoice Archived2"]
n74["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/notion.dark.svg' width='40' height='40' /></div><br/>Send to Archive Source File .."]
n75@{ icon: "mdi:cog", form: "rounded", label: "Aggregate7", pos: "b", h: 48 }
n76["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Notify New Invoice1"]
n77@{ icon: "mdi:cog", form: "rounded", label: "Aggregate9", pos: "b", h: 48 }
n78["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Notify New Invoice2"]
n79@{ icon: "mdi:cog", form: "rounded", label: "Aggregate10", pos: "b", h: 48 }
n80["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Notify New Invoice with Rece.."]
n81@{ icon: "mdi:cog", form: "rounded", label: "Aggregate11", pos: "b", h: 48 }
n82["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Notify New Invoice with Rece.."]
n4 --> n12
n28 --> n35
n60 --> n63
n58 --> n59
n61 --> n62
n64 --> n65
n66 --> n71
n67 --> n70
n68 --> n69
n75 --> n76
n72 --> n73
n77 --> n78
n79 --> n80
n81 --> n82
n19 --> n17
n19 --> n23
n19 --> n21
n19 --> n26
n19 --> n48
n19 --> n51
n19 --> n29
n1 --> n55
n1 --> n2
n0 --> n1
n10 --> n0
n35 --> n40
n35 --> n39
n35 --> n45
n29 --> n28
n27 --> n66
n6 --> n8
n54 --> n53
n46 --> n36
n46 --> n33
n47 --> n41
n47 --> n42
n15 --> n16
n3 --> n5
n44 --> n72
n55 --> n54
n8 --> n9
n14 --> n15
n16 --> n18
n53 --> n56
n53 --> n12
n5 --> n57
n5 --> n4
n13 --> n14
n13 --> n32
n7 -.-> n6
n40 --> n46
n39 --> n47
n45 --> n74
n43 --> n75
n11 --> n13
n21 --> n22
n31 --> n58
n38 --> n79
n20 --> n60
n36 --> n37
n51 --> n52
n25 --> n61
n42 --> n43
n22 --> n64
n12 --> n6
n17 --> n20
n23 --> n24
n33 --> n34
n48 --> n49
n41 --> n77
n18 --> n19
n2 --> n3
n37 --> n81
n32 --> n30
n24 --> n25
n34 --> n38
n9 --> n11
n50 --> n67
n26 --> n27
n74 --> n44
n52 --> n68
n49 --> n50
n30 --> n31
end
subgraph sg1["Error Flow"]
direction LR
n83@{ icon: "mdi:play-circle", form: "rounded", label: "Error Trigger", pos: "b", h: 48 }
n84["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/notion.dark.svg' width='40' height='40' /></div><br/>Create a database page"]
n83 --> n84
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n10,n83 trigger
class n6 ai
class n7 aiModel
class n1,n5,n13,n19,n35,n46,n47,n53 decision
class n17,n20,n21,n22,n23,n24,n25,n26,n27,n30,n31,n33,n34,n36,n37,n38,n41,n42,n43,n44,n48,n49,n50,n51,n52,n74,n84 database
class n2,n3,n15,n54,n55 api
class n0,n4,n8,n9,n11,n12,n14,n16,n18,n32,n39,n40,n45 code
classDef customIcon fill:none,stroke:none
class n0,n2,n3,n4,n8,n9,n10,n11,n12,n14,n15,n16,n17,n18,n20,n21,n22,n23,n24,n25,n26,n27,n29,n30,n31,n32,n33,n34,n36,n37,n38,n39,n40,n41,n42,n43,n44,n45,n48,n49,n50,n51,n52,n54,n55,n59,n62,n63,n65,n69,n70,n71,n73,n74,n76,n78,n80,n82,n84 customIcon
Varför det här spelar roll: fakturastatus blir snabbt opålitlig
Fakturor fallerar inte för att teamet är slarvigt. De fallerar för att inflödet är kaotiskt. En leverantör mejlar en PDF, någon skärmdumpar ett kvitto, en tredje lägger in en JSON-export och plötsligt är din ”source of truth” en handfull flikar och halvt uppdaterade Notion-sidor. Sedan kommer den riktiga kostnaden: dubbletter slinker igenom, delbetalningar tappas bort och du lägger tid på att dubbelkolla bankrader eftersom du inte litar på det som står i systemet. Ärligt talat är den mentala belastningen värst. Du går hela tiden runt och undrar vad du har missat.
Det här drar snabbt iväg. Så här brukar det gå sönder i verkliga team.
- Någon skriver om fakturatotaler och datum, och en fel siffra ändrar vad ”Amount Due” borde vara.
- Dubbletter ser olika ut på ytan, så samma faktura skapas två gånger med lite olika leverantörsnamn.
- Delbetalningar spåras i chattmeddelanden eller mejltrådar, så Notion visar ”Obetald” trots att pengar redan har flyttats.
- Specialfall tar evigheter eftersom godkännanden bygger på att jaga rätt person vid rätt tidpunkt.
Det du bygger: fakturauppföljning i Notion med Slack-godkännanden med ett klick
Det här arbetsflödet tar fakturor och kvitton (PDF, bild eller strukturerad data) och gör dem till konsekventa poster i Notion. Så fort ett dokument hamnar i flödet extraherar OCR och parsing de fält du faktiskt bryr dig om: fakturanummer, leverantör, valuta, totalsummor samt betalningsdatum/belopp. Sedan kanoniseras leverantörsnamn och fakturanummer, och arbetsflödet söker i din Notion-fakturadatabas för att avgöra om det är nytt, en dubblett eller en betalningsuppdatering. Om allt är tydligt uppdaterar det bara de redigerbara fälten (Paid Amount, Status, Last Payment Date) så att dina Notion-formler räknar om automatiskt. När arbetsflödet stöter på ett knepigt fall postar det till Slack med kontext och knappar med ett klick, så att en människa kan godkänna rätt åtgärd utan att gräva i Notion-sidor.
Arbetsflödet börjar med att fakturan tas emot, sedan avgör extraktion och matchning vad som ska hända härnäst. Därefter uppdateras Notion automatiskt, och Slack används bara för undantag som valutamissmatch, överbetalningar eller otydliga matchningar.
Det du bygger
| Det som automatiseras | Det du uppnår |
|---|---|
|
|
Förväntade resultat
Säg att du hanterar 20 fakturor/kvitton per vecka. Manuellt tar det oftast runt 10 minuter att öppna filen, plocka ut totalsummor, uppdatera Notion och dubbelkolla dubbletter, vilket blir cirka 3 timmar i veckan. Med det här arbetsflödet är inläsningen i princip omedelbar, och spåret ”felfria fält + Notion-uppdatering” kör automatiskt; du behöver bara hantera de få som kräver godkännande i Slack, kanske 5 ärenden à 2 minuter. Det är ungefär 2 timmar tillbaka de flesta veckor, plus färre ”är den här betald?”-pingar.
Innan du börjar
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Notion för databaserna Fakturor, Kvitton och Arkiv.
- Slack för att köra godkännanden med ett klick i kanaler.
- OCR API-nyckel (hämta den från din OCR-leverantör, till exempel ocr.space).
Kunskapsnivå: Medel. Du klistrar in databas-ID:n, kopplar autentisering och gör lite fältmappning i Notion-noder.
Vill du att någon bygger detta åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).
Steg för steg
Faktura eller kvitto kommer in i arbetsflödet. Du släpper en PDF/bild/JSON in i flödet (till exempel via webhook eller ett kopplat intake-steg), och n8n paketerar det så att efterföljande extrahering kan läsa det konsekvent.
Text extraheras och fält parsas. En OCR-förfrågan hämtar läsbar text från PDF:er och bilder, och sedan omvandlar en AI-agent (med en OpenAI-chatmodell eller en annan modell du föredrar) den röriga texten till strukturerade fält som fakturanummer, leverantör, totalsummor, valuta och betalningsdatum.
Notion genomsöks, matchas och rätt åtgärd väljs. Arbetsflödet kanoniserar leverantör och fakturanummer och söker i din Notion-fakturadatabas. Om den är ny skapar det en faktura och ett relaterat kvitto. Om det är en uppdatering redigerar det bara Paid Amount, Status och Last Payment Date, så att dina Notion-formler räknar om Amount Total och Amount Due automatiskt.
Slack används bara när en människa ska avgöra. Valutamissmatch, överbetalning eller otydliga matchningar triggar ett Slack-meddelande med kontext och knappar som Approve Partial, Mark Paid, Manual Review och Archive. När du klickar på en knapp återupptas arbetsflödet via en webhook och beslutet tillämpas i Notion.
Du kan enkelt justera godkännandereglerna för att skicka färre (eller fler) Slack-förfrågningar utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Felsökningstips
- Notion-autentisering kan löpa ut eller sakna åtkomst till databaserna. Om det slutar fungera, kontrollera att Notion-integrationen är delad till varje databas (Fakturor, Kvitton, Arkiv) och välj sedan om Database ID i varje Notion-nod först.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om efterföljande noder fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du att sitta och redigera utdata för alltid.
Snabba svar
Cirka 45 minuter om dina Notion-databaser redan finns.
Nej. Du kopplar Notion och Slack och mappar sedan några fält som Paid Amount och Status.
Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer startar på 20 USD/månad för högre volymer. Du behöver också räkna in OCR/API-användning och API-kostnader för din AI-modell (ofta några cent per dokument, beroende på längd).
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det bör du sannolikt göra. Du kan byta ut OCR-steget med HTTP Request mot din föredragna parser, och du kan justera prompten i AI Agent så att den matchar dina fakturaformat och fältnamn. Vanliga ändringar är att lägga till ett fält för ”Cost Center”, skärpa dubblettreglerna (endast fakturanummer) eller routa högvärdesfakturor till en annan Slack-kanal för godkännande.
Oftast handlar det om behörigheter. Säkerställ att Notion-integrationen är uttryckligen delad till varje databas som arbetsflödet använder, och bekräfta sedan att varje Notion-nod pekar på rätt Database ID. Om det fungerade tidigare och plötsligt slutade: skapa en ny integrationstoken, uppdatera autentiseringen i n8n och kör en enskild testkörning för att bekräfta att det inte handlar om rate limiting.
För de flesta små team fungerar hundratals kvitton i månaden bra, så länge din OCR- och AI-leverantör klarar anropen.
Ofta, ja, eftersom den här typen av flöde kräver förgreningar, matchningslogik och ett ”pausa för godkännande och återuppta”-mönster. n8n hanterar det utan att bli en skör kedja av separata Zaps eller scenarier, och self-hosting kan bli billigare när volymerna växer. Zapier eller Make kan fortfarande passa om din process i princip är ”nytt mejl → skapa post → skicka meddelande” utan dubblettkontroll eller betalningsavstämning. Om du vill ha godkännanden med ett klick och fallback-matchningen (belopp och datum) är n8n ett smidigare val. Prata med en automationsexpert om du är osäker på vad som passar.
När det här väl rullar slutar fakturor att vara en veckovis detektivhistoria. Notion hålls strukturerat, Slack avbryter dig bara när det verkligen behövs och statusen ”betald” börjar äntligen betyda något.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.