> ## Documentation Index
> Fetch the complete documentation index at: https://invopop-silo-entry-faults-guidance.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Stripe

> Import and process invoices and credit notes from Stripe

<Tabs>
  <Tab title="Description">
    <Columns cols="2">
      <div class="flex flex-col grow items-center justify-center">
        <Card title="Stripe Guide" icon="https://assets.invopop.com/apps/stripe/icon.svg" href="/guides/stripe" horizontal>
          View implementation guide ›
        </Card>
      </div>

      |           |                                |
      | --------- | ------------------------------ |
      | Developer | [Invopop](https://invopop.com) |
      | Category  | Integrations                   |
    </Columns>

    The Stripe integration allows you to automatically generate tax-compliant invoices and credit notes from your [Stripe](https://stripe.com/) dashboard. When a Stripe invoice or credit note reaches the [finalized status](https://support.stripe.com/questions/invoice-states), the integration automatically creates a new job in your selected Invopop workflow.

    The integration consists of two components:

    1. An Invopop app within your Stripe dashboard (installed from the [Stripe App Marketplace](https://marketplace.stripe.com/apps/invopop))
    2. An app in your Invopop console

    The job will extract the invoice data from Stripe and execute the workflow actions, such as converting it to any e-invoice format and submitting it to your local tax authority.

    **Key features**

    * **Automatic import:** Finalized Stripe invoices and credit notes are automatically imported into Invopop and saved to the `Sales` folder.
    * **Workflow automation:** Process imported invoices through your configured workflows to generate compliant invoices, PDFs, and submit to tax authorities.
    * **Real-time processing:** Track invoice status directly in your Stripe dashboard with the Invopop panel in the right sidebar.
    * **Historical import:** Import historical invoices issued before connecting Invopop by clicking <kbd>Process this invoice</kbd> in the Stripe dashboard.
    * **Error handling:** Retry failed imports directly from Stripe or troubleshoot in the Invopop console.
    * **Multi-format support:** Convert Stripe invoices to any e-invoice format supported by Invopop, including country-specific formats like VERI\*FACTU (Spain), XRechnung (Germany), and more.

    Make sure to check out our [Stripe Guide](/guides/stripe) for instructions on how to install the app, connect your accounts, configure workflows, and monitor invoice processing.
  </Tab>

  <Tab title="Actions">
    The following workflow actions will be available once you install and enable this app:

    <Card title="Import invoice from Stripe" icon="https://assets.invopop.com/apps/stripe/icon.svg" horizontal>
      Import invoice and credit note data from Stripe into Invopop.
    </Card>

    <Card title="Process invoice payment with Stripe" icon="https://assets.invopop.com/apps/stripe/icon.svg" horizontal>
      Processes payment for an invoice through Stripe
    </Card>

    <Card title="Assign virtual IBAN" icon="https://assets.invopop.com/apps/stripe/icon.svg" horizontal>
      Adds to the Payment Instructions the Virtual IBAN assigned to the customer
    </Card>
  </Tab>

  <Tab title="Workflows">
    The following workflows are available to make your integration easier. Use them as templates to build upon.

    <AccordionGroup>
      <Accordion title="Stripe - Basic PDF invoice workflow">
        This workflow syncs with Stripe to generate a PDF invoice on finalized sales.

        ```json Example Stripe PDF workflow theme={null}
        {
          "name": "Stripe PDF invoice",
          "description": "Sync from Stripe and generate a PDF",
          "schema": "bill/invoice",
          "steps": [
            {
              "id": "7dd8e370-139b-11f0-b939-af2e8ae705ac",
              "name": "Import invoice from Stripe",
              "provider": "stripe.import"
            },
            {
              "id": "95a82a10-139b-11f0-b939-af2e8ae705ac",
              "name": "Set state",
              "provider": "silo.state",
              "summary": "Set state to `processing`{.state .processing}",
              "config": {
                "state": "processing"
              }
            },
            {
              "id": "84cf92a0-139b-11f0-b939-af2e8ae705ac",
              "name": "Sign envelope",
              "provider": "silo.close"
            },
            {
              "id": "86a5b230-139b-11f0-b939-af2e8ae705ac",
              "name": "Generate PDF",
              "provider": "pdf",
              "summary": "Spanish · A4",
              "config": {
                "date_format": "%Y-%m-%d",
                "layout": "A4",
                "locale": "es",
                "logo_height": 40
              }
            },
            {
              "id": "8b321820-139b-11f0-b939-af2e8ae705ac",
              "name": "Set state",
              "provider": "silo.state",
              "summary": "Set state to `sent`{.state .sent}",
              "config": {
                "state": "sent"
              }
            }
          ],
          "rescue": [
            {
              "id": "90f4b420-139b-11f0-b939-af2e8ae705ac",
              "name": "Set state",
              "provider": "silo.state",
              "summary": "Set state to `error`{.state .error}",
              "config": {
                "state": "error"
              }
            }
          ]
        }
        ```

        [Add to my workspace →](https://console.invopop.com/redirect/workflows/new?template=stripe-invoice)
      </Accordion>

      <Accordion title="Stripe - VERI*FACTU invoice workflow">
        This workflow syncs with Stripe to issue a VERI\*FACTU invoice on finalized sales in Spain.

        ```json Example Stripe to VERI*FACTU workflow theme={null}
        {
          "name": "Stripe VERI*FACTU invoice",
          "description": "Sync from Stripe and issue a VERI*FACTU invoice",
          "schema": "bill/invoice",
          "steps": [
            {
              "id": "7dd8e370-139b-11f0-b939-af2e8ae705ac",
              "name": "Import invoice from Stripe",
              "provider": "stripe.import"
            },
            {
              "id": "95a82a10-139b-11f0-b939-af2e8ae705ac",
              "name": "Set state",
              "provider": "silo.state",
              "summary": "Set state to `processing`{.state .processing}",
              "config": {
                "state": "processing"
              }
            },
            {
              "id": "794f78d0-139d-11f0-9ab7-c391120166e0",
              "name": "Modify silo entry",
              "provider": "silo.modify",
              "summary": "Add `es-verifactu-v1` addon and \"Factura\" note",
              "config": {
                "addons": [
                  "es-verifactu-v1"
                ],
                "allow_invalid_json": false,
                "data": {
                  "doc": {
                    "notes": [
                      {
                        "key": "general",
                        "text": "Factura"
                      }
                    ]
                  }
                },
                "expr": "",
                "merge_type": "application/merge-patch+json",
                "sign": false,
                "tags": []
              }
            },
            {
              "id": "84cf92a0-139b-11f0-b939-af2e8ae705ac",
              "name": "Sign envelope",
              "provider": "silo.close"
            },
            {
              "id": "fc307c60-139b-11f0-b939-af2e8ae705ac",
              "name": "Generate VERI*FACTU",
              "provider": "verifactu.generate"
            },
            {
              "id": "fe479c90-139b-11f0-b939-af2e8ae705ac",
              "name": "Send invoice to VERI*FACTU",
              "provider": "verifactu.send"
            },
            {
              "id": "86a5b230-139b-11f0-b939-af2e8ae705ac",
              "name": "Generate PDF",
              "provider": "pdf",
              "summary": "Spanish · A4",
              "config": {
                "date_format": "%Y-%m-%d",
                "layout": "A4",
                "locale": "es",
                "logo_height": 40
              }
            },
            {
              "id": "8b321820-139b-11f0-b939-af2e8ae705ac",
              "name": "Set state",
              "provider": "silo.state",
              "summary": "Set state to `sent`{.state .sent}",
              "config": {
                "state": "sent"
              }
            }
          ],
          "rescue": [
            {
              "id": "90f4b420-139b-11f0-b939-af2e8ae705ac",
              "name": "Set state",
              "provider": "silo.state",
              "summary": "Set state to `error`{.state .error}",
              "config": {
                "state": "error"
              }
            }
          ]
        }
        ```

        [Add to my workspace →](https://console.invopop.com/redirect/workflows/new?template=stripe-verifactu)
      </Accordion>

      <Accordion title="Stripe - Peppol invoice workflow">
        This workflow syncs with Stripe and sends the invoice over the Peppol network, looking the customer's participant ID up at run time. Register your supplier on Peppol first — see the [Peppol guide](/guides/peppol).

        ```json Example Stripe to Peppol workflow theme={null}
        {
            "name": "Stripe Peppol invoice",
            "description": "Sync from Stripe and send via Peppol",
            "schema": "bill/invoice",
            "steps": [
                {
                    "id": "ab0b8c40-d4e7-11f0-9e5d-e1650cc9a3d1",
                    "name": "Import invoice from Stripe",
                    "provider": "stripe.import"
                },
                {
                    "id": "33e23480-10ab-11f0-a09e-7b63571a4ae2",
                    "name": "Set state",
                    "provider": "silo.state",
                    "summary": "Set state to `processing`{.state .processing}",
                    "config": {
                        "state": "processing"
                    }
                },
                {
                    "id": "dcb86010-d4e7-11f0-9bd8-c3ca8212c614",
                    "name": "Add supplier Peppol ID",
                    "provider": "silo.modify",
                    "summary": "Add supplier Peppol inbox",
                    "config": {
                        "merge_type": "application/jq",
                        "scope": "doc",
                        "jq": ".supplier.inboxes =\n(\n  (.supplier.inboxes // []) as $inboxes\n  |\n  if ($inboxes | any(.key == \"peppol\")) then\n    $inboxes\n  else\n    $inboxes + [\n      {\n        key: \"peppol\",\n        \"scheme\": \"\",\n        \"code\": \"\"\n      }\n    ]\n  end\n)\n"
                    }
                },
                {
                    "id": "00e00280-d66f-11f0-8fc4-ff91328c62f5",
                    "name": "Add purchase order number",
                    "provider": "silo.modify",
                    "summary": "Add purchase order number",
                    "config": {
                        "jq": "if (.ordering.code == null) and ((.ordering.purchases // [])[0].code == null) then \n.ordering.purchases[0].code = \"NA\"\nend",
                        "merge_type": "application/jq",
                        "scope": "doc"
                    }
                },
                {
                    "id": "b54b7000-d779-11f0-8eaf-79de543fb8d0",
                    "name": "Move negative line items to discounts",
                    "provider": "silo.modify",
                    "summary": "Move negative line items to discounts",
                    "config": {
                        "jq": ". as $doc\n|\n# Select lines that are negative\n($doc.lines | map(select(.item.price|tonumber < 0))) as $neg\n|\n# Select lines that are positive\n($doc.lines | map(select(.item.price|tonumber >= 0))) as $pos\n|\n# Convert negative lines to discount entries\n($neg | map({\n    reason: .item.name,\n    amount: ((.total|tonumber) * -1 | tostring),\n    taxes: .taxes\n})) as $discounts\n|\n$doc\n| .lines = $pos\n| .discounts = $discounts\n",
                        "merge_type": "application/jq",
                        "scope": "doc"
                    }
                },
                {
                    "id": "896013d0-d515-11f0-a832-01ce614dcba6",
                    "name": "Include payment means when empty",
                    "provider": "silo.modify",
                    "summary": "Include payment means when empty",
                    "config": {
                        "addons": [
                            "eu-en16931-v2017"
                        ],
                        "jq": "if (.payment.instructions // null) == null then\n  .\nelse\n  (\n\n    . as $doc\n    | .payment |= (\n        . // {}\n        |\n        .instructions.key |= (split(\"+\")[0])\n        |\n        .terms //= {\n          due_dates: [\n            {\n              date: (\n                $doc.issue_date\n                | strptime(\"%Y-%m-%d\")\n                | .[1] += 1      # add 1 month\n                | mktime\n                | strftime(\"%Y-%m-%d\")\n              ),\n              percent: \"100%\"\n            }\n          ]\n        }\n    )\n\n    # ↑↑↑ end of modifications ↑↑↑\n  )\nend\n",
                        "merge_type": "application/jq",
                        "scope": "doc"
                    }
                },
                {
                    "id": "6c96aac0-d4e8-11f0-9bd8-c3ca8212c614",
                    "name": "Lookup Peppol participant",
                    "provider": "peppol.lookup",
                    "summary": "Lookup customer",
                    "config": {
                        "party": "customer"
                    }
                },
                {
                    "id": "fb06b190-10aa-11f0-a09e-7b63571a4ae2",
                    "name": "Sign envelope",
                    "provider": "silo.close"
                },
                {
                    "id": "fc5aa8d0-10aa-11f0-a09e-7b63571a4ae2",
                    "name": "Generate UBL document",
                    "provider": "ubl.generate",
                    "summary": "Peppol BIS Billing UBL Invoice/CreditNote V3",
                    "config": {
                        "doc_type": "bis-invoice-v3",
                        "private": false
                    }
                },
                {
                    "id": "075442a0-10ab-11f0-a09e-7b63571a4ae2",
                    "name": "Send Peppol document",
                    "provider": "peppol.send"
                },
                {
                    "id": "3037a310-10ab-11f0-a09e-7b63571a4ae2",
                    "name": "Set state",
                    "provider": "silo.state",
                    "summary": "Set state to `sent`{.state .sent}",
                    "config": {
                        "state": "sent"
                    }
                }
            ],
            "rescue": [
                {
                    "id": "97ced0a0-d4e8-11f0-985d-3b44fe520da3",
                    "name": "Send email",
                    "provider": "email.send",
                    "summary": "",
                    "config": {
                        "add_invoice_customer": false,
                        "add_invoice_supplier": false,
                        "add_party": false,
                        "attach": "",
                        "body": "VGhpcyBpbnZvaWNlICh7ey5mdWxsX2NvZGV9fSkgZmFpbGVkIHdpdGggZXJyb3I6IHt7LmZhdWx0c319",
                        "connection_id": "default",
                        "subject": "The invoice failed - check invopop",
                        "zip_attachments": false
                    }
                },
                {
                    "id": "39513240-10ab-11f0-a09e-7b63571a4ae2",
                    "name": "Set state",
                    "provider": "silo.state",
                    "summary": "Set state to `error`{.state .error}",
                    "config": {
                        "state": "error"
                    }
                }
            ]
        }
        ```

        [Add to my workspace →](https://console.invopop.com/redirect/workflows/new?template=stripe-peppol)
      </Accordion>

      <Accordion title="Stripe - France send invoice workflow">
        This workflow syncs with Stripe, then forwards the invoice to the PPF when the customer is registered in the French directory, or records it for e-reporting when they are not. There is no one-click template for it yet — copy the JSON into a new [Empty Invoice workflow](https://console.invopop.com/redirect/workflows/new?template=empty-invoice).

        ```json Example Stripe France workflow theme={null}
        {
            "name": "Stripe France send invoice",
            "description": "Sync from Stripe and forward to PPF or record for reporting",
            "schema": "bill/invoice",
            "steps": [
                {
                    "id": "ab0b8c40-d4e7-11f0-9e5d-e1650cc9a3d1",
                    "name": "Import invoice from Stripe",
                    "provider": "stripe.import"
                },
                {
                    "id": "33e23480-10ab-11f0-a09e-7b63571a4ae2",
                    "name": "Set state",
                    "provider": "silo.state",
                    "summary": "Set state to `processing`{.state .processing}",
                    "config": {
                        "state": "processing"
                    }
                },
                {
                    "id": "eea78ac0-26f0-11f1-9156-e518ebabd527",
                    "name": "Add billing mode",
                    "provider": "silo.modify",
                    "notes": "S2 (already-paid) ONLY when fully paid (totals.advance == total_with_tax); else S1. S2 also adds payment.terms due_dates (BR-FR-CO-09). Reads .totals.advance (NOT the old .advances bug).",
                    "summary": "Modifications configured",
                    "config": {
                        "jq": ".tax.ext = (.tax.ext // {})\n| .tax.point = \"issue\"\n| if ((.totals.advance // null) != null and (.totals.advance == .totals.total_with_tax)) then\n    .tax.ext[\"fr-ctc-billing-mode\"] = \"S2\"\n    | .payment = (.payment // {})\n    | .payment.terms = (.payment.terms // {\"due_dates\":[{\"date\":.issue_date,\"percent\":\"100%\"}]})\n  else\n    .tax.ext[\"fr-ctc-billing-mode\"] = \"S1\"\n  end",
                        "merge_type": "application/jq",
                        "scope": "doc"
                    }
                },
                {
                    "id": "4f427d80-a44d-11f0-b23b-fd08a0f26c87",
                    "name": "Add VATEX",
                    "provider": "silo.modify",
                    "summary": "Modifications configured",
                    "config": {
                        "jq": ".lines |= map(\n  .taxes |= map(\n    (.ext[\"untdid-tax-category\"]? as $cat\n     | if $cat then\n         {\n           key: {\n             \"AE\": \"reverse-charge\",\n             \"E\": \"export\",\n             \"G\": \"export\",\n             \"O\": \"outside-scope\",\n             \"K\": \"intra-community\"\n           }[$cat],\n           vatex: {\n             \"AE\": \"VATEX-EU-AE\",\n             \"G\": \"VATEX-EU-G\",\n             \"O\": \"VATEX-EU-O\",\n             \"K\": \"VATEX-EU-IC\"\n           }[$cat]\n         } as $m\n\n         | if $m.key then .key = $m.key else . end\n         | if $m.vatex then\n             .ext = ((.ext // {}) + {\"cef-vatex\": $m.vatex})\n           else\n             .\n           end\n       else\n         .\n       end\n    )\n  )\n)",
                        "merge_type": "application/jq",
                        "scope": "doc",
                        "sign": false
                    }
                },
                {
                    "id": "7dad54c0-154a-11f0-8028-c1ed648b57b5",
                    "name": "Add bank details",
                    "provider": "silo.modify",
                    "notes": "Normalizes the payment key to SEPA credit transfer format",
                    "summary": "Modifications configured",
                    "config": {
                        "allow_invalid_json": false,
                        "data": {
                            "doc": {
                                "payment": {
                                    "instructions": {
                                        "credit_transfer": [
                                            {
                                                "bic": "",
                                                "iban": ""
                                            }
                                        ],
                                        "key": "credit-transfer"
                                    }
                                }
                            }
                        },
                        "expr": "(doc?.payment?.instructions == nil || doc?.payment?.instructions?.key == \"credit-transfer\")\n&& doc?.payment?.terms?.due_dates != nil",
                        "merge_type": "application/merge-patch+json",
                        "sign": false
                    }
                },
                {
                    "id": "fb06b190-10aa-11f0-a09e-7b63571a4ae2",
                    "name": "Sign envelope",
                    "provider": "silo.close"
                },
                {
                    "id": "86a5b230-139b-11f0-b939-af2e8ae705ac",
                    "name": "Generate PDF",
                    "provider": "pdf",
                    "summary": "French · A4",
                    "config": {
                        "date_format": "%Y-%m-%d",
                        "layout": "A4",
                        "locale": "fr",
                        "logo_height": 40
                    }
                },
                {
                    "id": "de2407b0-5e94-11f1-90fe-f3d836f89160",
                    "name": "Lookup in Directory",
                    "provider": "gov-fr.directory.lookup",
                    "next": [
                        {
                            "status": "NA",
                            "code": "found",
                            "steps": [
                                {
                                    "id": "3ffd50e0-5e95-11f1-90fe-f3d836f89160",
                                    "name": "Add flow2 addon",
                                    "provider": "silo.modify",
                                    "summary": "Modifications configured",
                                    "config": {
                                        "addons": [
                                            "fr-ctc-flow2-v1"
                                        ]
                                    }
                                },
                                {
                                    "id": "1f8bf500-5e95-11f1-90fe-f3d836f89160",
                                    "name": "Generate UBL document",
                                    "provider": "ubl.generate",
                                    "summary": "Peppol France CIUS UBL Invoice/CreditNote",
                                    "config": {
                                        "attach_invoice_pdf": false,
                                        "doc_type": "peppol-fr-cius",
                                        "private": false
                                    }
                                },
                                {
                                    "id": "9e22f4a0-485f-11f1-86b7-9745cc4d2380",
                                    "name": "Record document for e-invoicing",
                                    "provider": "gov-fr.directory.record"
                                },
                                {
                                    "id": "285c9450-5e95-11f1-90fe-f3d836f89160",
                                    "name": "Send Peppol Document",
                                    "provider": "peppol.send"
                                },
                                {
                                    "id": "2d6926c0-5e95-11f1-90fe-f3d836f89160",
                                    "name": "Forward document to PPF",
                                    "provider": "gov-fr.directory.forward"
                                }
                            ]
                        },
                        {
                            "status": "NA",
                            "code": "not-found",
                            "steps": [
                                {
                                    "id": "5cff2420-7470-11f1-9deb-cda1ffc5317f",
                                    "name": "Add flow10 addon",
                                    "provider": "silo.modify",
                                    "summary": "Modifications configured",
                                    "config": {
                                        "addons": [
                                            "fr-ctc-flow10-v1"
                                        ]
                                    }
                                },
                                {
                                    "id": "3a023fc0-5e95-11f1-90fe-f3d836f89160",
                                    "name": "Record document for reporting",
                                    "provider": "gov-fr.reporting.record"
                                },
                                {
                                    "id": "aaf85b90-6996-11f1-8722-e7a7821bd54f",
                                    "name": "Verify invoice can be sent",
                                    "provider": "peppol.has.inboxes",
                                    "next": [
                                        {
                                            "status": "NA",
                                            "code": "true",
                                            "steps": [
                                                {
                                                    "id": "afcc78e0-6996-11f1-8722-e7a7821bd54f",
                                                    "name": "Generate UBL document",
                                                    "provider": "ubl.generate",
                                                    "summary": "Peppol BIS Billing UBL Invoice/CreditNote V3",
                                                    "config": {
                                                        "attach_invoice_pdf": false,
                                                        "doc_type": "bis-invoice-v3",
                                                        "private": false
                                                    }
                                                },
                                                {
                                                    "id": "b798c790-6996-11f1-8722-e7a7821bd54f",
                                                    "name": "Send Peppol document",
                                                    "provider": "peppol.send"
                                                }
                                            ]
                                        },
                                        {
                                            "status": "NA",
                                            "code": "false"
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                },
                {
                    "id": "3037a310-10ab-11f0-a09e-7b63571a4ae2",
                    "name": "Set state",
                    "provider": "silo.state",
                    "summary": "Set state to `sent`{.state .sent}",
                    "config": {
                        "state": "sent"
                    }
                }
            ],
            "rescue": [
                {
                    "id": "39513240-10ab-11f0-a09e-7b63571a4ae2",
                    "name": "Set state",
                    "provider": "silo.state",
                    "summary": "Set state to `error`{.state .error}",
                    "config": {
                        "state": "error"
                    }
                }
            ]
        }
        ```

        [Read the country notes →](/guides/stripe#country-workflows)
      </Accordion>
    </AccordionGroup>
  </Tab>
</Tabs>

***

<Card title="Participate in our community" icon="forumbee" href="https://community.invopop.com" arrow="true" horizontal>
  Ask and answer questions about Stripe App →
</Card>
