customers

Create a customer

Changed on

This endpoint creates a customer. When a customer with the same external_id already exists, it is updated instead, and only the fields present in the payload are changed.

post/customers

Request

Request body

Example request

{
  "customer": {
    "external_id": "5eb02857-a71e-4ea2-bcf9-57d3a41bc6ba",
    "billing_entity_code": "acme_corp",
    "address_line1": "5230 Penfield Ave",
    "city": "Woodland Hills",
    "country": "US",
    "currency": "USD",
    "email": "dinesh@piedpiper.example",
    "legal_name": "Coleman-Blair",
    "legal_number": "49-008-2965",
    "logo_url": "http://hooli.com/logo.png",
    "name": "Gavin Belson",
    "firstname": "Gavin",
    "lastname": "Belson",
    "account_type": "customer",
    "customer_type": "company",
    "phone": "1-171-883-3711 x245",
    "state": "CA",
    "tax_codes": [
      "french_standard_vat"
    ],
    "tax_identification_number": "EU123456789",
    "timezone": "America/Los_Angeles",
    "url": "http://hooli.com",
    "zipcode": "91364",
    "net_payment_term": 30,
    "external_salesforce_id": "0015p00001JQx1QAAT",
    "finalize_zero_amount_invoice": "inherit",
    "billing_configuration": {
      "invoice_grace_period": 3,
      "subscription_invoice_issuing_date_anchor": "next_period_start",
      "subscription_invoice_issuing_date_adjustment": "keep_anchor",
      "payment_provider": "stripe",
      "payment_provider_code": "stripe-eu-1",
      "provider_customer_id": "cus_12345",
      "sync": true,
      "sync_with_provider": true,
      "document_locale": "fr",
      "provider_payment_methods": [
        "card",
        "sepa_debit",
        "us_bank_account",
        "bacs_debit",
        "link",
        "boleto",
        "crypto",
        "customer_balance"
      ]
    },
    "shipping_address": {
      "address_line1": "5230 Penfield Ave",
      "city": "Woodland Hills",
      "country": "US",
      "state": "CA",
      "zipcode": "91364"
    },
    "integration_customers": [
      {
        "id": "1a901a90-1a90-1a90-1a90-1a901a901a90",
        "integration_type": "netsuite",
        "integration_code": "netsuite-eu-1",
        "code": "netsuite-eu-1",
        "external_customer_id": "cus_12345",
        "sync_with_provider": true,
        "subsidiary_id": "2",
        "targeted_object": "contacts"
      }
    ],
    "metadata": [
      {
        "id": "1a901a90-1a90-1a90-1a90-1a901a901a90",
        "key": "Purchase Order",
        "value": "123456789",
        "display_in_invoice": true
      }
    ],
    "invoice_custom_section_codes": [
      "eu_bank_details"
    ]
  }
}

Response

Customer created or updated

Example response

{
  "customer": {
    "lago_id": "1a901a90-1a90-1a90-1a90-1a901a901a90",
    "sequential_id": 1,
    "slug": "LAG-1234-001",
    "external_id": "5eb02857-a71e-4ea2-bcf9-57d3a41bc6ba",
    "billing_entity_code": "acme_corp",
    "address_line1": "5230 Penfield Ave",
    "applicable_timezone": "America/Los_Angeles",
    "city": "Woodland Hills",
    "country": "US",
    "currency": "USD",
    "email": "dinesh@piedpiper.example",
    "legal_name": "Coleman-Blair",
    "legal_number": "49-008-2965",
    "logo_url": "http://hooli.com/logo.png",
    "name": "Gavin Belson",
    "firstname": "Gavin",
    "lastname": "Belson",
    "account_type": "customer",
    "customer_type": "company",
    "phone": "1-171-883-3711 x245",
    "state": "CA",
    "tax_identification_number": "EU123456789",
    "timezone": "America/Los_Angeles",
    "url": "http://hooli.com",
    "zipcode": "91364",
    "net_payment_term": 30,
    "external_salesforce_id": "0015p00001JQx1QAAT",
    "created_at": "2022-04-29T08:59:51Z",
    "updated_at": "2022-04-29T08:59:51Z",
    "finalize_zero_amount_invoice": "inherit",
    "billing_configuration": {
      "invoice_grace_period": 3,
      "subscription_invoice_issuing_date_anchor": "next_period_start",
      "subscription_invoice_issuing_date_adjustment": "keep_anchor",
      "payment_provider": "stripe",
      "payment_provider_code": "stripe-eu-1",
      "provider_customer_id": "cus_12345",
      "sync": true,
      "sync_with_provider": true,
      "document_locale": "fr",
      "provider_payment_methods": [
        "card",
        "sepa_debit",
        "us_bank_account",
        "bacs_debit",
        "link",
        "boleto",
        "crypto",
        "customer_balance"
      ]
    },
    "shipping_address": {
      "address_line1": "5230 Penfield Ave",
      "city": "Woodland Hills",
      "country": "US",
      "state": "CA",
      "zipcode": "91364"
    },
    "metadata": [
      {
        "lago_id": "1a901a90-1a90-1a90-1a90-1a901a901a90",
        "key": "Purchase Order",
        "value": "123456789",
        "display_in_invoice": true,
        "created_at": "2022-04-29T08:59:51Z"
      }
    ],
    "integration_customers": [
      {
        "lago_id": "1a901a90-1a90-1a90-1a90-1a901a901a90",
        "type": "netsuite",
        "integration_code": "netsuite-eu-1",
        "code": "netsuite-eu-1",
        "is_default": true,
        "category": "accounting",
        "external_customer_id": "cus_12345",
        "sync_with_provider": true,
        "subsidiary_id": "2",
        "targeted_object": "contacts",
        "email": "dinesh@piedpiper.example"
      }
    ],
    "taxes": [
      {
        "lago_id": "1a901a90-1a90-1a90-1a90-1a901a901a90",
        "name": "TVA",
        "code": "french_standard_vat",
        "description": "French standard VAT",
        "rate": 20,
        "applied_to_organization": true,
        "applied_to_billing_entities_codes": [
          "acme_corp",
          "foo_bar"
        ],
        "created_at": "2023-07-06T14:35:58Z"
      }
    ],
    "applicable_invoice_custom_sections": [
      {
        "lago_id": "1a901a90-1a90-1a90-1a90-1a901a901a90",
        "name": "EU Bank Details",
        "code": "eu_bank_details",
        "description": "This section contains the bank details for EU customers.",
        "details": "Bank Name: Lago Bank, IBAN: FR7630004000031234567890143",
        "display_name": "Bank Details:",
        "applied_to_organization": true,
        "organization_id": "1a901a90-1a90-1a90-1a90-1a901a901a90",
        "created_at": "2023-07-06T14:35:58Z"
      }
    ],
    "error_details": [
      {
        "lago_id": "1a901a90-1a90-1a90-1a90-1a901a901a90",
        "error_code": "tax_error",
        "details": {
          "tax_error": "taxDateTooFarInFuture"
        }
      }
    ]
  }
}

Changes

    • breaking

      added subschema #2 to the / request property allOf list

    • breaking

      the request property / became not nullable

    • breaking

      removed the enum value undefined of the request property /

    • breaking

      the / request property type changed from object to no type

    • breaking

      the response property ////////// became nullable for the status

    • breaking

      the response property ////////// became nullable for the status

    • breaking

      the response property ////////// became nullable for the status

    • breaking

      the response property ////////// became nullable for the status

    • breaking

      the response property //////// became nullable for the status

    • warning

      the / request property's maxLength was set to 500

    • warning

      the / request property's maxLength was set to 500

    • warning

      the / request property's maxLength was set to 255

    • warning

      the / request property's maxLength was set to 255

    • warning

      the / request property's maxLength was set to 255

    • warning

      the / request property's maxLength was set to 255

    • warning

      the /// request property's maxLength was set to 20

    • warning

      the /// request property's maxLength was set to 100

    • warning

      the / request property's maxLength was set to 255

    • warning

      the / request property's maxLength was set to 255

    • warning

      the / request property's maxLength was set to 255

    • warning

      removed the request property //

    • warning

      removed the request property //

    • warning

      removed the request property //

    • warning

      removed the request property //

    • warning

      removed the request property //

    • warning

      removed the request property //

    • warning

      added the new SYP enum value to the ///////// response property for the response status

    • warning

      added the new TND enum value to the ///////// response property for the response status

    • warning

      added the new avalara enum value to the //////// response property for the response status

    • warning

      added the new cashfree enum value to the ////////// response property for the response status

    • warning

      added the new flutterwave enum value to the ////////// response property for the response status

    • warning

      added the new moneyhash enum value to the ////////// response property for the response status

    • warning

      added the new undefined enum value to the ////////// response property for the response status

    • info

      added the new optional request property /

    • info

      added the new optional request property ///

    • info

      added the new optional request property ///

    • info

      the request property // became nullable

    • info

      the request property // became nullable

    • info

      the request property // became nullable

    • info

      the request property // became nullable

    • info

      the request property /// became optional

    • info

      added the new SYP enum value to the request property /

    • info

      added the new TND enum value to the request property /

    • info

      added the new avalara enum value to the request property ///

    • info

      added the new cashfree enum value to the request property //

    • info

      added the new flutterwave enum value to the request property //

    • info

      added the new hubspot enum value to the request property ///

    • info

      added the new moneyhash enum value to the request property //

    • info

      added the new salesforce enum value to the request property ///

    • info

      added the new undefined enum value to the request property //

    • info

      added the non-success response with the status

    • info

      added the optional property //// to the response with the status

    • info

      the response property ///////// became required for the status

    • info

      the response property ///////// became required for the status

    • info

      the response property ///////// became required for the status

    • info

      the response property ///////// became required for the status

    • info

      the response property ///////// became required for the status

    • info

      the response property ///////// became required for the status

    • info

      the response property ///////// became required for the status

    • info

      the response property ///////// became required for the status

    • info

      the response property ///////// became required for the status

    • info

      the response property ///////// became required for the status

    • info

      the response property ///////// became required for the status

    • info

      the response property ///////// became required for the status

    • info

      the response property ///////// became required for the status

    • info

      the response property ///////// became required for the status

    • info

      the response property ///////// became required for the status

    • info

      the response property ///////// became required for the status

    • info

      the response property ///////// became required for the status

    • info

      the response property ///////// became required for the status

    • info

      the response property ///////// became required for the status

    • info

      the response property ///////// became required for the status

    • info

      the response property ///////// became required for the status

    • info

      the response property ///////// became required for the status

    • info

      the response property ///////// became required for the status

    • info

      the response property ///////// became required for the status

    • info

      the response property ///////// became required for the status

    • info

      the response property ///////// became required for the status

    • info

      the response property ///////// became required for the status

    • info

      the response property ///////// became required for the status

    • info

      the response property //// became required for the status

    • info

      added the required property ///////// to the response with the status

    • info

      added the required property //////// to the response with the status

    • info

      added the required property //////// to the response with the status

    • info

      added the required property //////// to the response with the status