---
updatedAt: 2026-09-08T12:34:20.000Z
agentTools:
  projectIndex: https://developers.getknit.dev/llms.txt
---

# Create a Contact

Creates a new contact such as a customer or vendor in your accounting platform.

## Supported Apps

<Table align={["left","left","left"]}>
  <thead>
    <tr>
      <th style={{ textAlign: "left" }}>
        App
      </th>

      <th style={{ textAlign: "left" }}>
        App ID
      </th>

      <th style={{ textAlign: "left" }}>
        Remarks
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td style={{ textAlign: "left" }}>
        Xero
      </td>

      <td style={{ textAlign: "left" }}>
        `xero`
      </td>

      <td style={{ textAlign: "left" }}>
        `contactType` is not honored by xero. It will map a contact to `CUSTOMER` or `VENDOR` based on activity (invoices/bills generated).
      </td>
    </tr>

    <tr>
      <td style={{ textAlign: "left" }}>
        Zohobooks
      </td>

      <td style={{ textAlign: "left" }}>
        `zohobook`
      </td>

      <td style={{ textAlign: "left" }}>
        `taxNumber` key will have tax registration number with respect to country. For Indian customers it will be **GST Number.**
      </td>
    </tr>

    <tr>
      <td style={{ textAlign: "left" }}>
        Microsoft Dynamics 365
      </td>

      <td style={{ textAlign: "left" }}>
        `microsoft-dynamics-365`
      </td>

      <td style={{ textAlign: "left" }}>

      </td>
    </tr>

    <tr>
      <td style={{ textAlign: "left" }}>
        Sage Intacct
      </td>

      <td style={{ textAlign: "left" }}>
        `sageIntacct`
      </td>

      <td style={{ textAlign: "left" }}>
        `id` key needs to be passed in `metaData` for creating contact which is user defined unique Identifier for that Contact.
      </td>
    </tr>

    <tr>
      <td style={{ textAlign: "left" }}>
        Quickbooks
      </td>

      <td style={{ textAlign: "left" }}>
        `quickbooks`
      </td>

      <td style={{ textAlign: "left" }}>
        `name` is mandatory field.
      </td>
    </tr>

    <tr>
      <td style={{ textAlign: "left" }}>
        Freshbooks
      </td>

      <td style={{ textAlign: "left" }}>
        `freshbooks`
      </td>

      <td style={{ textAlign: "left" }}>

      </td>
    </tr>

    <tr>
      <td style={{ textAlign: "left" }}>
        Netsuite
      </td>

      <td style={{ textAlign: "left" }}>
        `netsuite`
      </td>

      <td style={{ textAlign: "left" }}>
        Pass `companyId` in `metaData`
      </td>
    </tr>

    <tr>
      <td style={{ textAlign: "left" }}>
        Sage 200 Standard
      </td>

      <td style={{ textAlign: "left" }}>
        `sage200`
      </td>

      <td style={{ textAlign: "left" }}>
        **metaData.reference** is a required field of type string (less than 9 chars).
        If you want to specify country in the address object, specify country_code id as value for country, you can get the country_code ids by making a

        <Anchor label="passthrough " target="_blank" href="https://developers.getknit.dev/reference/passthrough-request">passthrough </Anchor>

        API call with path = `/country_codes`' and method = `GET`
      </td>
    </tr>

    <tr>
      <td style={{ textAlign: "left" }}>
        Wave Financial
      </td>

      <td style={{ textAlign: "left" }}>
        `wave`
      </td>

      <td style={{ textAlign: "left" }}>
        `contactType` must be `CUSTOMER`. The app does not support APIs for Vendors.
      </td>
    </tr>

    <tr>
      <td style={{ textAlign: "left" }}>
        Oracle Financials
      </td>

      <td style={{ textAlign: "left" }}>
        `oracle-financials`
      </td>

      <td style={{ textAlign: "left" }}>
        * Supported fields: `contactType`,  `name`, `contactPersonFirstName`, `contactPersonLastName`, `email`, `phoneNumber`, `taxNumber`, `addresses`, `metaData.taxOrganizationType`, `metaData.businessRelationship`, and `metaData.taxRegistrationCountryCode`.
        * Required fields: `contactType`, `name`, `metaData.taxOrganizationType`, `metaData.businessRelationship`.
        * `taxOrganizationType` possible values: `Corporation`, `Foreign Corporation`, and `Individual`.
        * `businessRelationship` possible values: `Prospective` and `Spend Authorized`.
        * Valid values for `taxRegistrationCountryCode` and `addresses.country`: alpha2 country code.
      </td>
    </tr>

    <tr>
      <td style={{ textAlign: "left" }}>
        Odoo Accounting Online
      </td>

      <td style={{ textAlign: "left" }}>
        `odoo`
      </td>

      <td style={{ textAlign: "left" }}>
        _name, contactType, email, phoneNumber, addresses[0]_ are honored fields.
        addresses[0].state, addresses[0].country expects state_id and country_id which can be obtained by making a <Anchor label="passthrough request." target="_blank" href="https://developers.getknit.dev/docs/passthrough-requests-for-odoo-accounting-online">passthrough request.</Anchor>
      </td>
    </tr>

    <tr>
      <td style={{ textAlign: "left" }}>
        SAP S/4HANA Cloud Public Edition
      </td>

      <td style={{ textAlign: "left" }}>
        `sap-s4hana-cloud-public`
      </td>

      <td style={{ textAlign: "left" }}>
        **Required Fields:**

        * `name`
        * `contactType` - must be `CUSTOMER` or `VENDOR`

        **Optional Honored Fields:**

        * `email` - only attached to the first entry in `addresses`
        * `phoneNumber` - only attached to the first entry in `addresses`
        * `addresses`
        * `metaData.BusinessPartnerCategory` - defaults to `2` (Organization)
        * `metaData.BusinessPartnerGrouping` - defaults to `0001`
        * `metaData.BusinessPartner` - sets an external id for tenants using external numbering; omit for internal auto-numbering
        * `metaData.Language` - defaults to `EN`

        **Notes:**

        * Some tenants require a different `metaData.BusinessPartnerGrouping` (e.g. `0002`) to create a `VENDOR` - check with your SAP admin.
        * Any other `metaData` key is passed through as-is on the request body, so tenant-specific requirements (for example `SearchTerm1`, or a `to_Customer`/`to_Supplier` block for external Customer/Supplier numbering) can be supplied this way without dedicated support.
      </td>
    </tr>
  </tbody>
</Table>

# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "base-api",
    "version": "1.0"
  },
  "servers": [
    {
      "url": "https://api.getknit.dev/v1.0"
    }
  ],
  "components": {
    "securitySchemes": {
      "sec0": {
        "type": "apiKey",
        "in": "header",
        "name": "Authorization",
        "x-bearer-format": "bearer"
      },
      "sec1": {
        "type": "apiKey",
        "in": "header",
        "name": "X-Knit-Integration-Id"
      }
    }
  },
  "security": [
    {
      "sec0": [],
      "sec1": []
    }
  ],
  "paths": {
    "/accounting.contact.create": {
      "post": {
        "summary": "Create a Contact",
        "description": "",
        "operationId": "create-a-contact-1",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "name",
                  "contactType"
                ],
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "Name of contact (It could be individual or buisness)"
                  },
                  "contactType": {
                    "type": "string",
                    "enum": [
                      "CUSTOMER",
                      "VENDOR"
                    ]
                  },
                  "contactPersonFirstName": {
                    "type": "string"
                  },
                  "contactPersonLastName": {
                    "type": "string"
                  },
                  "email": {
                    "type": "string"
                  },
                  "phoneNumber": {
                    "type": "string"
                  },
                  "taxNumber": {
                    "type": "string"
                  },
                  "addresses": {
                    "type": "array",
                    "items": {
                      "properties": {
                        "addressLine1": {
                          "type": "string"
                        },
                        "addressLine2": {
                          "type": "string"
                        },
                        "city": {
                          "type": "string"
                        },
                        "state": {
                          "type": "string"
                        },
                        "country": {
                          "type": "string"
                        },
                        "zipCode": {
                          "type": "string"
                        },
                        "addressType": {
                          "type": "string",
                          "enum": [
                            "SHIPPING",
                            "BILLING",
                            "NOT_SPECIFIED"
                          ]
                        }
                      },
                      "type": "object"
                    }
                  },
                  "metaData": {
                    "type": "string",
                    "description": "JSON-formatted string containing set of key-value attributes to provide additional data"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": "{\n    \"success\": true,\n    \"data\": {\n        \"contactId\": \"bf787102-4945-4253-bf0b-313caf94d71b\"\n    }\n}"
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "example": true,
                      "default": true
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "contactId": {
                          "type": "string",
                          "example": "bf787102-4945-4253-bf0b-313caf94d71b"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "400",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": "{\n  \"success\": false,\n  \"error\": {\n    \"msg\": \"descriptive error message\"\n  }\n}"
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "example": false,
                      "default": true
                    },
                    "error": {
                      "type": "object",
                      "properties": {
                        "msg": {
                          "type": "string",
                          "example": "descriptive error message"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "deprecated": false
      }
    }
  },
  "x-readme": {
    "headers": [],
    "explorer-enabled": true,
    "proxy-enabled": true
  },
  "x-readme-fauxas": true
}
```