Skip to main content
PATCH
/
public
/
v2
/
vendors
/
{vendor_id}
/
Update vendor (partial)
curl --request PATCH \
  --url https://api.dualentry.com/public/v2/vendors/{vendor_id}/ \
  --header 'Content-Type: application/json' \
  --header 'X-API-KEY: <api-key>' \
  --data '
{
  "custom_fields": [
    {}
  ],
  "is_active": true,
  "name": "<string>",
  "unique_id": "<string>",
  "email": "<string>",
  "phone": "<string>",
  "website": "<string>",
  "single_address": "<string>",
  "country": "<string>",
  "is_1099_eligible": true,
  "address": {
    "street": "<string>",
    "city": "<string>",
    "postal_code": "<string>",
    "state": "",
    "country": "",
    "second_line": "",
    "name": "<string>"
  },
  "tin": "<string>",
  "attachments": [
    {
      "id": 123,
      "file_name": "<string>",
      "file_size": 123,
      "download_url": "<string>",
      "upload_url": "<string>",
      "category": "default"
    }
  ],
  "term_id": 123,
  "customer_account_number": "<string>",
  "name_on_check": "<string>",
  "preferred_payment_method_id": 123,
  "bank_account_number": "<string>",
  "bank_routing_number": "<string>",
  "bank_account_type": "<string>"
}
'
import requests

url = "https://api.dualentry.com/public/v2/vendors/{vendor_id}/"

payload = {
    "custom_fields": [{}],
    "is_active": True,
    "name": "<string>",
    "unique_id": "<string>",
    "email": "<string>",
    "phone": "<string>",
    "website": "<string>",
    "single_address": "<string>",
    "country": "<string>",
    "is_1099_eligible": True,
    "address": {
        "street": "<string>",
        "city": "<string>",
        "postal_code": "<string>",
        "state": "",
        "country": "",
        "second_line": "",
        "name": "<string>"
    },
    "tin": "<string>",
    "attachments": [
        {
            "id": 123,
            "file_name": "<string>",
            "file_size": 123,
            "download_url": "<string>",
            "upload_url": "<string>",
            "category": "default"
        }
    ],
    "term_id": 123,
    "customer_account_number": "<string>",
    "name_on_check": "<string>",
    "preferred_payment_method_id": 123,
    "bank_account_number": "<string>",
    "bank_routing_number": "<string>",
    "bank_account_type": "<string>"
}
headers = {
    "X-API-KEY": "<api-key>",
    "Content-Type": "application/json"
}

response = requests.patch(url, json=payload, headers=headers)

print(response.text)
const options = {
  method: 'PATCH',
  headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
  body: JSON.stringify({
    custom_fields: [{}],
    is_active: true,
    name: '<string>',
    unique_id: '<string>',
    email: '<string>',
    phone: '<string>',
    website: '<string>',
    single_address: '<string>',
    country: '<string>',
    is_1099_eligible: true,
    address: {
      street: '<string>',
      city: '<string>',
      postal_code: '<string>',
      state: '',
      country: '',
      second_line: '',
      name: '<string>'
    },
    tin: '<string>',
    attachments: [
      {
        id: 123,
        file_name: '<string>',
        file_size: 123,
        download_url: '<string>',
        upload_url: '<string>',
        category: 'default'
      }
    ],
    term_id: 123,
    customer_account_number: '<string>',
    name_on_check: '<string>',
    preferred_payment_method_id: 123,
    bank_account_number: '<string>',
    bank_routing_number: '<string>',
    bank_account_type: '<string>'
  })
};

fetch('https://api.dualentry.com/public/v2/vendors/{vendor_id}/', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://api.dualentry.com/public/v2/vendors/{vendor_id}/",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "PATCH",
  CURLOPT_POSTFIELDS => json_encode([
    'custom_fields' => [
        [
                
        ]
    ],
    'is_active' => true,
    'name' => '<string>',
    'unique_id' => '<string>',
    'email' => '<string>',
    'phone' => '<string>',
    'website' => '<string>',
    'single_address' => '<string>',
    'country' => '<string>',
    'is_1099_eligible' => true,
    'address' => [
        'street' => '<string>',
        'city' => '<string>',
        'postal_code' => '<string>',
        'state' => '',
        'country' => '',
        'second_line' => '',
        'name' => '<string>'
    ],
    'tin' => '<string>',
    'attachments' => [
        [
                'id' => 123,
                'file_name' => '<string>',
                'file_size' => 123,
                'download_url' => '<string>',
                'upload_url' => '<string>',
                'category' => 'default'
        ]
    ],
    'term_id' => 123,
    'customer_account_number' => '<string>',
    'name_on_check' => '<string>',
    'preferred_payment_method_id' => 123,
    'bank_account_number' => '<string>',
    'bank_routing_number' => '<string>',
    'bank_account_type' => '<string>'
  ]),
  CURLOPT_HTTPHEADER => [
    "Content-Type: application/json",
    "X-API-KEY: <api-key>"
  ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.dualentry.com/public/v2/vendors/{vendor_id}/"

	payload := strings.NewReader("{\n  \"custom_fields\": [\n    {}\n  ],\n  \"is_active\": true,\n  \"name\": \"<string>\",\n  \"unique_id\": \"<string>\",\n  \"email\": \"<string>\",\n  \"phone\": \"<string>\",\n  \"website\": \"<string>\",\n  \"single_address\": \"<string>\",\n  \"country\": \"<string>\",\n  \"is_1099_eligible\": true,\n  \"address\": {\n    \"street\": \"<string>\",\n    \"city\": \"<string>\",\n    \"postal_code\": \"<string>\",\n    \"state\": \"\",\n    \"country\": \"\",\n    \"second_line\": \"\",\n    \"name\": \"<string>\"\n  },\n  \"tin\": \"<string>\",\n  \"attachments\": [\n    {\n      \"id\": 123,\n      \"file_name\": \"<string>\",\n      \"file_size\": 123,\n      \"download_url\": \"<string>\",\n      \"upload_url\": \"<string>\",\n      \"category\": \"default\"\n    }\n  ],\n  \"term_id\": 123,\n  \"customer_account_number\": \"<string>\",\n  \"name_on_check\": \"<string>\",\n  \"preferred_payment_method_id\": 123,\n  \"bank_account_number\": \"<string>\",\n  \"bank_routing_number\": \"<string>\",\n  \"bank_account_type\": \"<string>\"\n}")

	req, _ := http.NewRequest("PATCH", url, payload)

	req.Header.Add("X-API-KEY", "<api-key>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.patch("https://api.dualentry.com/public/v2/vendors/{vendor_id}/")
  .header("X-API-KEY", "<api-key>")
  .header("Content-Type", "application/json")
  .body("{\n  \"custom_fields\": [\n    {}\n  ],\n  \"is_active\": true,\n  \"name\": \"<string>\",\n  \"unique_id\": \"<string>\",\n  \"email\": \"<string>\",\n  \"phone\": \"<string>\",\n  \"website\": \"<string>\",\n  \"single_address\": \"<string>\",\n  \"country\": \"<string>\",\n  \"is_1099_eligible\": true,\n  \"address\": {\n    \"street\": \"<string>\",\n    \"city\": \"<string>\",\n    \"postal_code\": \"<string>\",\n    \"state\": \"\",\n    \"country\": \"\",\n    \"second_line\": \"\",\n    \"name\": \"<string>\"\n  },\n  \"tin\": \"<string>\",\n  \"attachments\": [\n    {\n      \"id\": 123,\n      \"file_name\": \"<string>\",\n      \"file_size\": 123,\n      \"download_url\": \"<string>\",\n      \"upload_url\": \"<string>\",\n      \"category\": \"default\"\n    }\n  ],\n  \"term_id\": 123,\n  \"customer_account_number\": \"<string>\",\n  \"name_on_check\": \"<string>\",\n  \"preferred_payment_method_id\": 123,\n  \"bank_account_number\": \"<string>\",\n  \"bank_routing_number\": \"<string>\",\n  \"bank_account_type\": \"<string>\"\n}")
  .asString();
require 'uri'
require 'net/http'

url = URI("https://api.dualentry.com/public/v2/vendors/{vendor_id}/")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Patch.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"custom_fields\": [\n    {}\n  ],\n  \"is_active\": true,\n  \"name\": \"<string>\",\n  \"unique_id\": \"<string>\",\n  \"email\": \"<string>\",\n  \"phone\": \"<string>\",\n  \"website\": \"<string>\",\n  \"single_address\": \"<string>\",\n  \"country\": \"<string>\",\n  \"is_1099_eligible\": true,\n  \"address\": {\n    \"street\": \"<string>\",\n    \"city\": \"<string>\",\n    \"postal_code\": \"<string>\",\n    \"state\": \"\",\n    \"country\": \"\",\n    \"second_line\": \"\",\n    \"name\": \"<string>\"\n  },\n  \"tin\": \"<string>\",\n  \"attachments\": [\n    {\n      \"id\": 123,\n      \"file_name\": \"<string>\",\n      \"file_size\": 123,\n      \"download_url\": \"<string>\",\n      \"upload_url\": \"<string>\",\n      \"category\": \"default\"\n    }\n  ],\n  \"term_id\": 123,\n  \"customer_account_number\": \"<string>\",\n  \"name_on_check\": \"<string>\",\n  \"preferred_payment_method_id\": 123,\n  \"bank_account_number\": \"<string>\",\n  \"bank_routing_number\": \"<string>\",\n  \"bank_account_type\": \"<string>\"\n}"

response = http.request(request)
puts response.read_body
{
  "term_id": 123,
  "term_name": "<string>",
  "preferred_payment_method_id": 123,
  "preferred_payment_method_name": "<string>",
  "id": 123,
  "address": {
    "street": "<string>",
    "city": "<string>",
    "postal_code": "<string>",
    "state": "",
    "country": "",
    "second_line": "",
    "name": "<string>"
  },
  "vendor_type": "<string>",
  "name": "<string>",
  "custom_fields": [],
  "attachments": [],
  "created_by": {
    "actor_type": "<string>",
    "email": "<string>",
    "first_name": "<string>",
    "last_name": "<string>",
    "timestamp": "2023-11-07T05:31:56Z"
  },
  "updated_by": {
    "actor_type": "<string>",
    "email": "<string>",
    "first_name": "<string>",
    "last_name": "<string>",
    "timestamp": "2023-11-07T05:31:56Z"
  },
  "approval_status": "<string>",
  "next_approvers": [
    {
      "id": 123,
      "first_name": "<string>",
      "last_name": "<string>",
      "email": "<string>",
      "full_name": "<string>",
      "avatar_url": "<string>"
    }
  ],
  "rejected_by": {
    "id": 123,
    "first_name": "<string>",
    "last_name": "<string>",
    "email": "<string>",
    "full_name": "<string>",
    "rejection_reason": "<string>"
  },
  "company_id": 123,
  "company_name": "<string>",
  "customer_account_number": "",
  "name_on_check": "",
  "bank_account_number": "",
  "bank_routing_number": "",
  "bank_account_type": "",
  "single_address": "<string>",
  "country": "",
  "unique_id": "<string>",
  "website": "<string>",
  "email": "<string>",
  "is_active": true,
  "phone": "<string>",
  "is_1099_eligible": false,
  "tin": "<string>",
  "tin_type": "",
  "record_status": "posted"
}
{
  "errors": {},
  "success": false
}
{
  "errors": {},
  "success": false
}
{
  "errors": {},
  "success": false
}

Authorizations

X-API-KEY
string
header
required

Path Parameters

vendor_id
integer
required

Body

application/json

Partial update payload for PATCH /public/vendors/{id}/.

Every field is optional: send only the fields you want to change. Unset fields are left untouched on the existing record.

custom_fields
Custom Fields · object[] | null
is_active
boolean | null
vendor_type
enum<string> | null
Available options:
individual,
company,
intercompany,
tax_agency
name
string | null
Required string length: 2 - 255
unique_id
string | null
Required string length: 1 - 64
email
string | null
Maximum string length: 128
phone
string | null
Maximum string length: 64
Pattern: ^[0-9\s\+\-\.\(\)]*$
website
string | null
Maximum string length: 128
single_address
string | null
Maximum string length: 2048
country
Allowed value: ""
is_1099_eligible
boolean | null
address
AddressSchemaIn · object | null
tin
string | null
Maximum string length: 11
tin_type
enum<string> | null
Available options:
ein,
ssn,
utr
Maximum string length: 3
attachments
AttachmentSchemaOut · object[] | null
record_status
enum<string> | null
Available options:
draft,
posted,
archived
term_id
integer | null
customer_account_number
string | null
Maximum string length: 128
name_on_check
string | null
Maximum string length: 255
preferred_payment_method_id
integer | null
bank_account_number
string | null
Maximum string length: 34
bank_routing_number
string | null
Maximum string length: 9
bank_account_type
Allowed value: ""

Response

OK

term_id
integer | null
required
term_name
string
required
preferred_payment_method_id
integer | null
required
preferred_payment_method_name
string
required
id
integer
required
address
AddressSchemaIn · object | null
required
vendor_type
string
required
name
string
required
Maximum string length: 255
custom_fields
CustomFieldValuePairOutputSchema · object[]
attachments
PublicAttachmentSchemaOut · object[]
created_by
AuditActorSchemaOut · object | null

Schema for audit actor information.

updated_by
AuditActorSchemaOut · object | null

Schema for audit actor information.

approval_status
string | null
next_approvers
ApproverDictSchema · object[] | null
rejected_by
RejectedBySchema · object | null

Schema for rejector information including rejection reason.

company_id
integer | null
company_name
string | null
customer_account_number
string
default:""
name_on_check
string
default:""
bank_account_number
string
default:""
bank_routing_number
string
default:""
bank_account_type
default:""
Allowed value: ""
single_address
string | null
Maximum string length: 2048
country
default:""
Available options:
AA,
AB,
AC,
AD,
AE,
AF,
AG,
AH,
AI,
AJ,
AK,
AL,
AM,
AN,
AO,
AP,
AQ,
AR,
AS,
AT,
AU,
AV,
AW,
AX,
AY,
AZ,
BA,
BB,
BC,
BD,
BE,
BF,
BG,
BH,
BI,
BJ,
BK,
BL,
BM,
BN,
BO,
BP,
BQ,
BR,
BS,
BT,
BU,
BV,
BW,
BX,
BY,
BZ,
CA,
CB,
CC,
CD,
CE,
CF,
CG,
CH,
CI,
CJ,
CK,
CL,
CM,
CN,
CO,
CP,
CQ,
CR,
CS,
CT,
CU,
CV,
CW,
CX,
CY,
CZ,
DA,
DB,
DC,
DD,
DE,
DF,
DG,
DH,
DI,
DJ,
DK,
DL,
DM,
DN,
DO,
DP,
DQ,
DR,
DS,
DT,
DU,
DV,
DW,
DX,
DY,
DZ,
EA,
EB,
EC,
ED,
EE,
EF,
EG,
EH,
EI,
EJ,
EK,
EL,
EM,
EN,
EO,
EP,
EQ,
ER,
ES,
ET,
EU,
EV,
EW,
EX,
EY,
EZ,
FA,
FB,
FC,
FD,
FE,
FF,
FG,
FH,
FI,
FJ,
FK,
FL,
FM,
FN,
FO,
FP,
FQ,
FR,
FS,
FT,
FU,
FV,
FW,
FX,
FY,
FZ,
GA,
GB,
GC,
GD,
GE,
GF,
GG,
GH,
GI,
GJ,
GK,
GL,
GM,
GN,
GO,
GP,
GQ,
GR,
GS,
GT,
GU,
GV,
GW,
GX,
GY,
GZ,
HA,
HB,
HC,
HD,
HE,
HF,
HG,
HH,
HI,
HJ,
HK,
HL,
HM,
HN,
HO,
HP,
HQ,
HR,
HS,
HT,
HU,
HV,
HW,
HX,
HY,
HZ,
IA,
IB,
IC,
ID,
IE,
IF,
IG,
IH,
II,
IJ,
IK,
IL,
IM,
IN,
IO,
IP,
IQ,
IR,
IS,
IT,
IU,
IV,
IW,
IX,
IY,
IZ,
JA,
JB,
JC,
JD,
JE,
JF,
JG,
JH,
JI,
JJ,
JK,
JL,
JM,
JN,
JO,
JP,
JQ,
JR,
JS,
JT,
JU,
JV,
JW,
JX,
JY,
JZ,
KA,
KB,
KC,
KD,
KE,
KF,
KG,
KH,
KI,
KJ,
KK,
KL,
KM,
KN,
KO,
KP,
KQ,
KR,
KS,
KT,
KU,
KV,
KW,
KX,
KY,
KZ,
LA,
LB,
LC,
LD,
LE,
LF,
LG,
LH,
LI,
LJ,
LK,
LL,
LM,
LN,
LO,
LP,
LQ,
LR,
LS,
LT,
LU,
LV,
LW,
LX,
LY,
LZ,
MA,
MB,
MC,
MD,
ME,
MF,
MG,
MH,
MI,
MJ,
MK,
ML,
MM,
MN,
MO,
MP,
MQ,
MR,
MS,
MT,
MU,
MV,
MW,
MX,
MY,
MZ,
NA,
NB,
NC,
ND,
NE,
NF,
NG,
NH,
NI,
NJ,
NK,
NL,
NM,
NN,
NO,
NP,
NQ,
NR,
NS,
NT,
NU,
NV,
NW,
NX,
NY,
NZ,
OA,
OB,
OC,
OD,
OE,
OF,
OG,
OH,
OI,
OJ,
OK,
OL,
OM,
ON,
OO,
OP,
OQ,
OR,
OS,
OT,
OU,
OV,
OW,
OX,
OY,
OZ,
PA,
PB,
PC,
PD,
PE,
PF,
PG,
PH,
PI,
PJ,
PK,
PL,
PM,
PN,
PO,
PP,
PQ,
PR,
PS,
PT,
PU,
PV,
PW,
PX,
PY,
PZ,
QA,
QB,
QC,
QD,
QE,
QF,
QG,
QH,
QI,
QJ,
QK,
QL,
QM,
QN,
QO,
QP,
QQ,
QR,
QS,
QT,
QU,
QV,
QW,
QX,
QY,
QZ,
RA,
RB,
RC,
RD,
RE,
RF,
RG,
RH,
RI,
RJ,
RK,
RL,
RM,
RN,
RO,
RP,
RQ,
RR,
RS,
RT,
RU,
RV,
RW,
RX,
RY,
RZ,
SA,
SB,
SC,
SD,
SE,
SF,
SG,
SH,
SI,
SJ,
SK,
SL,
SM,
SN,
SO,
SP,
SQ,
SR,
SS,
ST,
SU,
SV,
SW,
SX,
SY,
SZ,
TA,
TB,
TC,
TD,
TE,
TF,
TG,
TH,
TI,
TJ,
TK,
TL,
TM,
TN,
TO,
TP,
TQ,
TR,
TS,
TT,
TU,
TV,
TW,
TX,
TY,
TZ,
UA,
UB,
UC,
UD,
UE,
UF,
UG,
UH,
UI,
UJ,
UK,
UL,
UM,
UN,
UO,
UP,
UQ,
UR,
US,
UT,
UU,
UV,
UW,
UX,
UY,
UZ,
VA,
VB,
VC,
VD,
VE,
VF,
VG,
VH,
VI,
VJ,
VK,
VL,
VM,
VN,
VO,
VP,
VQ,
VR,
VS,
VT,
VU,
VV,
VW,
VX,
VY,
VZ,
WA,
WB,
WC,
WD,
WE,
WF,
WG,
WH,
WI,
WJ,
WK,
WL,
WM,
WN,
WO,
WP,
WQ,
WR,
WS,
WT,
WU,
WV,
WW,
WX,
WY,
WZ,
XA,
XB,
XC,
XD,
XE,
XF,
XG,
XH,
XI,
XJ,
XK,
XL,
XM,
XN,
XO,
XP,
XQ,
XR,
XS,
XT,
XU,
XV,
XW,
XX,
XY,
XZ,
YA,
YB,
YC,
YD,
YE,
YF,
YG,
YH,
YI,
YJ,
YK,
YL,
YM,
YN,
YO,
YP,
YQ,
YR,
YS,
YT,
YU,
YV,
YW,
YX,
YY,
YZ,
ZA,
ZB,
ZC,
ZD,
ZE,
ZF,
ZG,
ZH,
ZI,
ZJ,
ZK,
ZL,
ZM,
ZN,
ZO,
ZP,
ZQ,
ZR,
ZS,
ZT,
ZU,
ZV,
ZW,
ZX,
ZY,
ZZ
Maximum string length: 2
unique_id
string | null

External identifier supplied by the user to disambiguate vendors that share a display name (e.g. an ID from another system).

Maximum string length: 64
website
string | null
Maximum string length: 128
email
string | null
Maximum string length: 128
is_active
boolean
default:true
phone
string | null
Maximum string length: 64
is_1099_eligible
boolean
default:false
tin
string | null
tin_type
string | null
default:""
record_status
enum<string>
default:posted
Available options:
draft,
posted,
archived
Last modified on July 13, 2026