curl --request GET \
--url https://api.grainfinance.co/v1/vendors/{vendorId} \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://api.grainfinance.co/v1/vendors/{vendorId}"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Basic <encoded-value>'}};
fetch('https://api.grainfinance.co/v1/vendors/{vendorId}', 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/{vendorId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.grainfinance.co/v1/vendors/{vendorId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Basic <encoded-value>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.grainfinance.co/v1/vendors/{vendorId}")
.header("Authorization", "Basic <encoded-value>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.grainfinance.co/v1/vendors/{vendorId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Basic <encoded-value>'
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"
}Get Vendor
Retrieves a single vendor by its vendor id, including its contact details and payout methods.
curl --request GET \
--url https://api.grainfinance.co/v1/vendors/{vendorId} \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://api.grainfinance.co/v1/vendors/{vendorId}"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Basic <encoded-value>'}};
fetch('https://api.grainfinance.co/v1/vendors/{vendorId}', 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/{vendorId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.grainfinance.co/v1/vendors/{vendorId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Basic <encoded-value>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.grainfinance.co/v1/vendors/{vendorId}")
.header("Authorization", "Basic <encoded-value>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.grainfinance.co/v1/vendors/{vendorId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Basic <encoded-value>'
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"
}Authorizations
Basic authentication using the partner API keys from https://console.grainfinance.co/keys
Path Parameters
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}Response
Vendor found
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"