Accounting

Connect Pennylane

Your application calls one EchoRelay URL. When Pennylane changes its API, you update the mapping, not your application.

How Pennylane signs requests

Each request carries a company API token as a bearer token in the Authorization header. An admin creates the token under Settings, Connectivity, Developers, gives it read only or read and write access to API V2, and sets an expiry date. That tab needs the Essential plan or higher.

Can you connect it today?

Yes, with a company API token that has read and write access. Add a bearer-token credential with it.

A sample mapping

Your application sends the first request below. The mapping turns it into the body of POST /api/external/v2/company_customers, shown second.

Your request

{
    "company": "Atelier Dupont SARL",
    "street": "8 rue de la Paix",
    "postcode": "75002",
    "city": "Paris",
    "country": "FR",
    "emails": [
        "compta@atelier-dupont.example"
    ]
}

What Pennylane receives

{
    "name": "Atelier Dupont SARL",
    "billing_address": {
        "address": "8 rue de la Paix",
        "postal_code": "75002",
        "city": "Paris",
        "country_alpha2": "FR"
    },
    "emails": [
        "compta@atelier-dupont.example"
    ]
}

The mapping

{
    "$schema": "https://schemas.echorelay.dev/transform/mapping/v1.json",
    "root": {
        "type": "object",
        "id": "root",
        "properties": {
            "name": {
                "type": "field",
                "id": "name",
                "path": "company"
            },
            "billing_address": {
                "type": "object",
                "id": "billing-address",
                "properties": {
                    "address": {
                        "type": "field",
                        "id": "address",
                        "path": "street"
                    },
                    "postal_code": {
                        "type": "field",
                        "id": "postal-code",
                        "path": "postcode"
                    },
                    "city": {
                        "type": "field",
                        "id": "city",
                        "path": "city"
                    },
                    "country_alpha2": {
                        "type": "field",
                        "id": "country",
                        "path": "country"
                    }
                }
            },
            "emails": {
                "type": "field",
                "id": "emails",
                "path": "emails"
            }
        }
    }
}

The grammar, the answer mapping and the dry run are in the mapping docs.

What you bring

This is not a ready-made connector. You bring a sample request or Pennylane’s OpenAPI document, you or your agent write the mapping, and we run the integration you define.

Pennylane facts on this page were read 2026-10-30 from Pennylane: create a company API token, Pennylane API reference: create a company customer. Another service? Check it here.

Connect everything. Deploy nothing.

No credit card required.