curl --request POST \
--url https://api.grainfinance.co/v1/vendors \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"externalVendorId": "vendor_001",
"contactFullName": "Acme Supplies Ltd",
"contactCountry": "US",
"contactCity": "New York",
"contactEmail": "billing@acmesupplies.com",
"contactStreetName": "Madison Avenue",
"contactBuildingName": "383",
"contactPostalCode": "10017",
"payoutMethod": {
"type": "SEPA",
"currency": "EUR",
"bankName": "JPMorgan Chase Bank, N.A.",
"bankCountry": "US",
"bankState": "NY",
"accountNumber": "8290041523",
"iban": "DE89370400440532013000",
"bicSwift": "CHASUS33XXX",
"routingCode": "021000021",
"bankCode": "004",
"branchCode": "081",
"sortCode": "560036",
"bsbCode": "082902",
"bankAddress": "383 Madison Avenue, New York, NY 10017"
},
"contactState": "NY",
"contactTaxId": "901234567",
"contactPhoneNumber": "+13212312321",
"companyRegisterNumber": "514455544"
}
'import requests
url = "https://api.grainfinance.co/v1/vendors"
payload = {
"externalVendorId": "vendor_001",
"contactFullName": "Acme Supplies Ltd",
"contactCountry": "US",
"contactCity": "New York",
"contactEmail": "billing@acmesupplies.com",
"contactStreetName": "Madison Avenue",
"contactBuildingName": "383",
"contactPostalCode": "10017",
"payoutMethod": {
"type": "SEPA",
"currency": "EUR",
"bankName": "JPMorgan Chase Bank, N.A.",
"bankCountry": "US",
"bankState": "NY",
"accountNumber": "8290041523",
"iban": "DE89370400440532013000",
"bicSwift": "CHASUS33XXX",
"routingCode": "021000021",
"bankCode": "004",
"branchCode": "081",
"sortCode": "560036",
"bsbCode": "082902",
"bankAddress": "383 Madison Avenue, New York, NY 10017"
},
"contactState": "NY",
"contactTaxId": "901234567",
"contactPhoneNumber": "+13212312321",
"companyRegisterNumber": "514455544"
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
externalVendorId: 'vendor_001',
contactFullName: 'Acme Supplies Ltd',
contactCountry: 'US',
contactCity: 'New York',
contactEmail: 'billing@acmesupplies.com',
contactStreetName: 'Madison Avenue',
contactBuildingName: '383',
contactPostalCode: '10017',
payoutMethod: {
type: 'SEPA',
currency: 'EUR',
bankName: 'JPMorgan Chase Bank, N.A.',
bankCountry: 'US',
bankState: 'NY',
accountNumber: '8290041523',
iban: 'DE89370400440532013000',
bicSwift: 'CHASUS33XXX',
routingCode: '021000021',
bankCode: '004',
branchCode: '081',
sortCode: '560036',
bsbCode: '082902',
bankAddress: '383 Madison Avenue, New York, NY 10017'
},
contactState: 'NY',
contactTaxId: '901234567',
contactPhoneNumber: '+13212312321',
companyRegisterNumber: '514455544'
})
};
fetch('https://api.grainfinance.co/v1/vendors', 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.grainfinance.co/v1/vendors",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'externalVendorId' => 'vendor_001',
'contactFullName' => 'Acme Supplies Ltd',
'contactCountry' => 'US',
'contactCity' => 'New York',
'contactEmail' => 'billing@acmesupplies.com',
'contactStreetName' => 'Madison Avenue',
'contactBuildingName' => '383',
'contactPostalCode' => '10017',
'payoutMethod' => [
'type' => 'SEPA',
'currency' => 'EUR',
'bankName' => 'JPMorgan Chase Bank, N.A.',
'bankCountry' => 'US',
'bankState' => 'NY',
'accountNumber' => '8290041523',
'iban' => 'DE89370400440532013000',
'bicSwift' => 'CHASUS33XXX',
'routingCode' => '021000021',
'bankCode' => '004',
'branchCode' => '081',
'sortCode' => '560036',
'bsbCode' => '082902',
'bankAddress' => '383 Madison Avenue, New York, NY 10017'
],
'contactState' => 'NY',
'contactTaxId' => '901234567',
'contactPhoneNumber' => '+13212312321',
'companyRegisterNumber' => '514455544'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$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.grainfinance.co/v1/vendors"
payload := strings.NewReader("{\n \"externalVendorId\": \"vendor_001\",\n \"contactFullName\": \"Acme Supplies Ltd\",\n \"contactCountry\": \"US\",\n \"contactCity\": \"New York\",\n \"contactEmail\": \"billing@acmesupplies.com\",\n \"contactStreetName\": \"Madison Avenue\",\n \"contactBuildingName\": \"383\",\n \"contactPostalCode\": \"10017\",\n \"payoutMethod\": {\n \"type\": \"SEPA\",\n \"currency\": \"EUR\",\n \"bankName\": \"JPMorgan Chase Bank, N.A.\",\n \"bankCountry\": \"US\",\n \"bankState\": \"NY\",\n \"accountNumber\": \"8290041523\",\n \"iban\": \"DE89370400440532013000\",\n \"bicSwift\": \"CHASUS33XXX\",\n \"routingCode\": \"021000021\",\n \"bankCode\": \"004\",\n \"branchCode\": \"081\",\n \"sortCode\": \"560036\",\n \"bsbCode\": \"082902\",\n \"bankAddress\": \"383 Madison Avenue, New York, NY 10017\"\n },\n \"contactState\": \"NY\",\n \"contactTaxId\": \"901234567\",\n \"contactPhoneNumber\": \"+13212312321\",\n \"companyRegisterNumber\": \"514455544\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
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.post("https://api.grainfinance.co/v1/vendors")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"externalVendorId\": \"vendor_001\",\n \"contactFullName\": \"Acme Supplies Ltd\",\n \"contactCountry\": \"US\",\n \"contactCity\": \"New York\",\n \"contactEmail\": \"billing@acmesupplies.com\",\n \"contactStreetName\": \"Madison Avenue\",\n \"contactBuildingName\": \"383\",\n \"contactPostalCode\": \"10017\",\n \"payoutMethod\": {\n \"type\": \"SEPA\",\n \"currency\": \"EUR\",\n \"bankName\": \"JPMorgan Chase Bank, N.A.\",\n \"bankCountry\": \"US\",\n \"bankState\": \"NY\",\n \"accountNumber\": \"8290041523\",\n \"iban\": \"DE89370400440532013000\",\n \"bicSwift\": \"CHASUS33XXX\",\n \"routingCode\": \"021000021\",\n \"bankCode\": \"004\",\n \"branchCode\": \"081\",\n \"sortCode\": \"560036\",\n \"bsbCode\": \"082902\",\n \"bankAddress\": \"383 Madison Avenue, New York, NY 10017\"\n },\n \"contactState\": \"NY\",\n \"contactTaxId\": \"901234567\",\n \"contactPhoneNumber\": \"+13212312321\",\n \"companyRegisterNumber\": \"514455544\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.grainfinance.co/v1/vendors")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"externalVendorId\": \"vendor_001\",\n \"contactFullName\": \"Acme Supplies Ltd\",\n \"contactCountry\": \"US\",\n \"contactCity\": \"New York\",\n \"contactEmail\": \"billing@acmesupplies.com\",\n \"contactStreetName\": \"Madison Avenue\",\n \"contactBuildingName\": \"383\",\n \"contactPostalCode\": \"10017\",\n \"payoutMethod\": {\n \"type\": \"SEPA\",\n \"currency\": \"EUR\",\n \"bankName\": \"JPMorgan Chase Bank, N.A.\",\n \"bankCountry\": \"US\",\n \"bankState\": \"NY\",\n \"accountNumber\": \"8290041523\",\n \"iban\": \"DE89370400440532013000\",\n \"bicSwift\": \"CHASUS33XXX\",\n \"routingCode\": \"021000021\",\n \"bankCode\": \"004\",\n \"branchCode\": \"081\",\n \"sortCode\": \"560036\",\n \"bsbCode\": \"082902\",\n \"bankAddress\": \"383 Madison Avenue, New York, NY 10017\"\n },\n \"contactState\": \"NY\",\n \"contactTaxId\": \"901234567\",\n \"contactPhoneNumber\": \"+13212312321\",\n \"companyRegisterNumber\": \"514455544\"\n}"
response = http.request(request)
puts response.read_body{
"vendorId": "1b0ada1e-fa1b-4cfe-a553-01b340c5650e",
"externalVendorId": "vendor_001",
"contact": {
"fullName": "Acme Supplies Ltd",
"country": "US",
"city": "New York",
"email": "billing@acmesupplies.com",
"streetName": "Madison Avenue",
"buildingName": "383",
"postalCode": "10017",
"state": "NY",
"taxId": "901234567",
"phoneNumber": "+13212312321",
"companyRegisterNumber": "514455544"
},
"payoutMethods": [
{
"type": "SEPA",
"currency": "EUR",
"bankName": "JPMorgan Chase Bank, N.A.",
"bankCountry": "US",
"bankState": "NY",
"accountNumber": "8290041523",
"iban": "DE89370400440532013000",
"bicSwift": "CHASUS33XXX",
"routingCode": "021000021",
"bankCode": "004",
"branchCode": "081",
"sortCode": "560036",
"bsbCode": "082902",
"bankAddress": "383 Madison Avenue, New York, NY 10017"
}
],
"createdAt": "2026-05-15T09:12:28.000Z",
"updatedAt": "2026-05-15T09:12:28.000Z"
}{
"message": "Can't perform this action",
"reason": "Supplied object is in *Cancelled* state, which prevents performing this action"
}{
"message": "Can't perform this action",
"reason": "Supplied object is in *Cancelled* state, which prevents performing this action"
}{
"message": "Can't perform this action",
"reason": "Supplied object is in *Cancelled* state, which prevents performing this action"
}{
"message": "Can't perform this action",
"reason": "Supplied object is in *Cancelled* state, which prevents performing this action"
}Create Vendor
Creates a vendor with a single payout method.
The bank account fields required in payoutMethod depend on the method’s currency, bank country and type.
curl --request POST \
--url https://api.grainfinance.co/v1/vendors \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"externalVendorId": "vendor_001",
"contactFullName": "Acme Supplies Ltd",
"contactCountry": "US",
"contactCity": "New York",
"contactEmail": "billing@acmesupplies.com",
"contactStreetName": "Madison Avenue",
"contactBuildingName": "383",
"contactPostalCode": "10017",
"payoutMethod": {
"type": "SEPA",
"currency": "EUR",
"bankName": "JPMorgan Chase Bank, N.A.",
"bankCountry": "US",
"bankState": "NY",
"accountNumber": "8290041523",
"iban": "DE89370400440532013000",
"bicSwift": "CHASUS33XXX",
"routingCode": "021000021",
"bankCode": "004",
"branchCode": "081",
"sortCode": "560036",
"bsbCode": "082902",
"bankAddress": "383 Madison Avenue, New York, NY 10017"
},
"contactState": "NY",
"contactTaxId": "901234567",
"contactPhoneNumber": "+13212312321",
"companyRegisterNumber": "514455544"
}
'import requests
url = "https://api.grainfinance.co/v1/vendors"
payload = {
"externalVendorId": "vendor_001",
"contactFullName": "Acme Supplies Ltd",
"contactCountry": "US",
"contactCity": "New York",
"contactEmail": "billing@acmesupplies.com",
"contactStreetName": "Madison Avenue",
"contactBuildingName": "383",
"contactPostalCode": "10017",
"payoutMethod": {
"type": "SEPA",
"currency": "EUR",
"bankName": "JPMorgan Chase Bank, N.A.",
"bankCountry": "US",
"bankState": "NY",
"accountNumber": "8290041523",
"iban": "DE89370400440532013000",
"bicSwift": "CHASUS33XXX",
"routingCode": "021000021",
"bankCode": "004",
"branchCode": "081",
"sortCode": "560036",
"bsbCode": "082902",
"bankAddress": "383 Madison Avenue, New York, NY 10017"
},
"contactState": "NY",
"contactTaxId": "901234567",
"contactPhoneNumber": "+13212312321",
"companyRegisterNumber": "514455544"
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
externalVendorId: 'vendor_001',
contactFullName: 'Acme Supplies Ltd',
contactCountry: 'US',
contactCity: 'New York',
contactEmail: 'billing@acmesupplies.com',
contactStreetName: 'Madison Avenue',
contactBuildingName: '383',
contactPostalCode: '10017',
payoutMethod: {
type: 'SEPA',
currency: 'EUR',
bankName: 'JPMorgan Chase Bank, N.A.',
bankCountry: 'US',
bankState: 'NY',
accountNumber: '8290041523',
iban: 'DE89370400440532013000',
bicSwift: 'CHASUS33XXX',
routingCode: '021000021',
bankCode: '004',
branchCode: '081',
sortCode: '560036',
bsbCode: '082902',
bankAddress: '383 Madison Avenue, New York, NY 10017'
},
contactState: 'NY',
contactTaxId: '901234567',
contactPhoneNumber: '+13212312321',
companyRegisterNumber: '514455544'
})
};
fetch('https://api.grainfinance.co/v1/vendors', 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.grainfinance.co/v1/vendors",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'externalVendorId' => 'vendor_001',
'contactFullName' => 'Acme Supplies Ltd',
'contactCountry' => 'US',
'contactCity' => 'New York',
'contactEmail' => 'billing@acmesupplies.com',
'contactStreetName' => 'Madison Avenue',
'contactBuildingName' => '383',
'contactPostalCode' => '10017',
'payoutMethod' => [
'type' => 'SEPA',
'currency' => 'EUR',
'bankName' => 'JPMorgan Chase Bank, N.A.',
'bankCountry' => 'US',
'bankState' => 'NY',
'accountNumber' => '8290041523',
'iban' => 'DE89370400440532013000',
'bicSwift' => 'CHASUS33XXX',
'routingCode' => '021000021',
'bankCode' => '004',
'branchCode' => '081',
'sortCode' => '560036',
'bsbCode' => '082902',
'bankAddress' => '383 Madison Avenue, New York, NY 10017'
],
'contactState' => 'NY',
'contactTaxId' => '901234567',
'contactPhoneNumber' => '+13212312321',
'companyRegisterNumber' => '514455544'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$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.grainfinance.co/v1/vendors"
payload := strings.NewReader("{\n \"externalVendorId\": \"vendor_001\",\n \"contactFullName\": \"Acme Supplies Ltd\",\n \"contactCountry\": \"US\",\n \"contactCity\": \"New York\",\n \"contactEmail\": \"billing@acmesupplies.com\",\n \"contactStreetName\": \"Madison Avenue\",\n \"contactBuildingName\": \"383\",\n \"contactPostalCode\": \"10017\",\n \"payoutMethod\": {\n \"type\": \"SEPA\",\n \"currency\": \"EUR\",\n \"bankName\": \"JPMorgan Chase Bank, N.A.\",\n \"bankCountry\": \"US\",\n \"bankState\": \"NY\",\n \"accountNumber\": \"8290041523\",\n \"iban\": \"DE89370400440532013000\",\n \"bicSwift\": \"CHASUS33XXX\",\n \"routingCode\": \"021000021\",\n \"bankCode\": \"004\",\n \"branchCode\": \"081\",\n \"sortCode\": \"560036\",\n \"bsbCode\": \"082902\",\n \"bankAddress\": \"383 Madison Avenue, New York, NY 10017\"\n },\n \"contactState\": \"NY\",\n \"contactTaxId\": \"901234567\",\n \"contactPhoneNumber\": \"+13212312321\",\n \"companyRegisterNumber\": \"514455544\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
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.post("https://api.grainfinance.co/v1/vendors")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"externalVendorId\": \"vendor_001\",\n \"contactFullName\": \"Acme Supplies Ltd\",\n \"contactCountry\": \"US\",\n \"contactCity\": \"New York\",\n \"contactEmail\": \"billing@acmesupplies.com\",\n \"contactStreetName\": \"Madison Avenue\",\n \"contactBuildingName\": \"383\",\n \"contactPostalCode\": \"10017\",\n \"payoutMethod\": {\n \"type\": \"SEPA\",\n \"currency\": \"EUR\",\n \"bankName\": \"JPMorgan Chase Bank, N.A.\",\n \"bankCountry\": \"US\",\n \"bankState\": \"NY\",\n \"accountNumber\": \"8290041523\",\n \"iban\": \"DE89370400440532013000\",\n \"bicSwift\": \"CHASUS33XXX\",\n \"routingCode\": \"021000021\",\n \"bankCode\": \"004\",\n \"branchCode\": \"081\",\n \"sortCode\": \"560036\",\n \"bsbCode\": \"082902\",\n \"bankAddress\": \"383 Madison Avenue, New York, NY 10017\"\n },\n \"contactState\": \"NY\",\n \"contactTaxId\": \"901234567\",\n \"contactPhoneNumber\": \"+13212312321\",\n \"companyRegisterNumber\": \"514455544\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.grainfinance.co/v1/vendors")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"externalVendorId\": \"vendor_001\",\n \"contactFullName\": \"Acme Supplies Ltd\",\n \"contactCountry\": \"US\",\n \"contactCity\": \"New York\",\n \"contactEmail\": \"billing@acmesupplies.com\",\n \"contactStreetName\": \"Madison Avenue\",\n \"contactBuildingName\": \"383\",\n \"contactPostalCode\": \"10017\",\n \"payoutMethod\": {\n \"type\": \"SEPA\",\n \"currency\": \"EUR\",\n \"bankName\": \"JPMorgan Chase Bank, N.A.\",\n \"bankCountry\": \"US\",\n \"bankState\": \"NY\",\n \"accountNumber\": \"8290041523\",\n \"iban\": \"DE89370400440532013000\",\n \"bicSwift\": \"CHASUS33XXX\",\n \"routingCode\": \"021000021\",\n \"bankCode\": \"004\",\n \"branchCode\": \"081\",\n \"sortCode\": \"560036\",\n \"bsbCode\": \"082902\",\n \"bankAddress\": \"383 Madison Avenue, New York, NY 10017\"\n },\n \"contactState\": \"NY\",\n \"contactTaxId\": \"901234567\",\n \"contactPhoneNumber\": \"+13212312321\",\n \"companyRegisterNumber\": \"514455544\"\n}"
response = http.request(request)
puts response.read_body{
"vendorId": "1b0ada1e-fa1b-4cfe-a553-01b340c5650e",
"externalVendorId": "vendor_001",
"contact": {
"fullName": "Acme Supplies Ltd",
"country": "US",
"city": "New York",
"email": "billing@acmesupplies.com",
"streetName": "Madison Avenue",
"buildingName": "383",
"postalCode": "10017",
"state": "NY",
"taxId": "901234567",
"phoneNumber": "+13212312321",
"companyRegisterNumber": "514455544"
},
"payoutMethods": [
{
"type": "SEPA",
"currency": "EUR",
"bankName": "JPMorgan Chase Bank, N.A.",
"bankCountry": "US",
"bankState": "NY",
"accountNumber": "8290041523",
"iban": "DE89370400440532013000",
"bicSwift": "CHASUS33XXX",
"routingCode": "021000021",
"bankCode": "004",
"branchCode": "081",
"sortCode": "560036",
"bsbCode": "082902",
"bankAddress": "383 Madison Avenue, New York, NY 10017"
}
],
"createdAt": "2026-05-15T09:12:28.000Z",
"updatedAt": "2026-05-15T09:12:28.000Z"
}{
"message": "Can't perform this action",
"reason": "Supplied object is in *Cancelled* state, which prevents performing this action"
}{
"message": "Can't perform this action",
"reason": "Supplied object is in *Cancelled* state, which prevents performing this action"
}{
"message": "Can't perform this action",
"reason": "Supplied object is in *Cancelled* state, which prevents performing this action"
}{
"message": "Can't perform this action",
"reason": "Supplied object is in *Cancelled* state, which prevents performing this action"
}payoutMethod fields are required and their format rules, plus a matching example request.
Authorizations
Basic authentication using the partner API keys from https://console.grainfinance.co/keys
Body
Request body for POST /v1/vendors. Creates a vendor with a single payout method. The conditional
contact fields (contactState, contactTaxId, contactPhoneNumber, companyRegisterNumber) are
required for some countries.
The vendor id, as identified within your system.
^[A-Za-z0-9_.\-]{1,64}$"vendor_001"
The full name of the vendor's contact person or business.
"Acme Supplies Ltd"
The alpha-2 ISO 3166 country code of the vendor.
^[A-Za-z]{2}$"US"
The city of the vendor's address.
"New York"
The email address of the vendor.
"billing@acmesupplies.com"
The street name of the vendor's address.
"Madison Avenue"
The building name or number of the vendor's address.
"383"
The postal code of the vendor's address.
"10017"
The payout method to register for the vendor.
Show child attributes
Show child attributes
The ISO state code of the vendor's address. Required for vendors in US, CA, NZ and AU.
"NY"
The tax id of the vendor. Required for vendors in some countries.
"901234567"
The phone number of the vendor's contact. Required for vendors in some countries.
"+13212312321"
The company register number of the vendor. Required for vendors in some countries.
"514455544"
Response
Vendor created
A Vendor represents a payee that payouts can be sent to. Returned by POST /v1/vendors,
GET /v1/vendors/{vendorId}, and GET /v1/vendors.
The id of the vendor within the Grain platform.
[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}"1b0ada1e-fa1b-4cfe-a553-01b340c5650e"
The vendor id, as identified within your system.
^[A-Za-z0-9_.\-]{1,64}$"vendor_001"
The contact details of the vendor.
Show child attributes
Show child attributes
The payout methods registered for the vendor.
Show child attributes
Show child attributes
When the vendor was created, as an ISO-8601 date-time in UTC.
"2026-05-15T09:12:28.000Z"
When the vendor was last updated, as an ISO-8601 date-time in UTC.
"2026-05-15T09:12:28.000Z"