{
"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"
}
Select a currency, bank country, and payout type below to see exactly which payoutMethod fields are required and their format rules, plus a matching example request.
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.
When the vendor was last updated, as an ISO-8601 date-time in UTC.
Example:
"2026-05-15T09:12:28.000Z"
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Grain Developer Portal","colors":{"primary":"#3D82F7","light":"#6AA0F9","dark":"#2563EB"},"logo":{"light":"https://mintcdn.com/grainfinance/C_1vcIAg0NPjbAeO/logo/light.svg?fit=max\u0026auto=format\u0026n=C_1vcIAg0NPjbAeO\u0026q=85\u0026s=b888c1903085edd1bc00cfa6adfdc039","dark":"https://mintcdn.com/grainfinance/C_1vcIAg0NPjbAeO/logo/dark.svg?fit=max\u0026auto=format\u0026n=C_1vcIAg0NPjbAeO\u0026q=85\u0026s=6c57ab3a610f3fe95eefc158f678f311"},"favicon":"https://mintcdn.com/grainfinance/BdUNHBIRgC_EL1Ck/favicon.png?fit=max\u0026auto=format\u0026n=BdUNHBIRgC_EL1Ck\u0026q=85\u0026s=4a2881fb105e1412ccda79f2fed01f0e","api":{"openapi":"https://grain-docs-assets.s3.us-east-1.amazonaws.com/openapi.yaml"},"navbar":{"links":[{"href":"mailto:support@grainfinance.co","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://console.grainfinance.co"}},"footer":{},"contextual":{"options":["copy","view","chatgpt","claude","perplexity"],"display":"header"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"grainfinance","hasAudioNarration":false,"actualSubdomain":"grainfinance","customDomains":["docs.grainfinance.co"],"gitSource":{"type":"github","owner":"grainfinance","repo":"mintlify-docs","deployBranch":"main","isPrivate":true,"contentDirectory":"","mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af3502ac7674be9c8af894b","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"default","tag":"API","count":38},{"language":"default","tag":"Webhooks","count":17},{"language":"default","tag":"Events","count":13},{"language":"default","tag":"Hedges","count":11},{"language":"default","tag":"Get Started","count":7},{"language":"default","tag":"Concepts","count":6},{"language":"default","tag":"Customers","count":5},{"language":"default","tag":"Dual Hedges","count":5},{"language":"default","tag":"Conversions","count":4},{"language":"default","tag":"Drawdown Hedge","count":4}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/vendors/create-vendor","slug":"/api-reference/vendors/create-vendor","pageMetadata":{"playground":"simple","title":"Create Vendor","openapi":"POST /vendors","description":"Creates a vendor with a single payout method.\nThe bank account fields required in `payoutMethod` depend on the method's currency, bank country and type.","href":"/api-reference/vendors/create-vendor"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Creates a vendor with a single payout method.\\nThe bank account fields required in \", _jsx(_components.code, {\n children: \"payoutMethod\"\n }), \" depend on the method’s currency, bank country and type.\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];const PayoutSchemaExplorer=()=>{const LOCAL_RAILS=[{currencies:`USD`,countries:`US`,types:`ACH,Wire`,fields:`accountNumber,routingCode(9)`},{currencies:`CAD`,countries:`CA`,types:`EFT`,fields:`accountNumber,bankCode(4),branchCode(5)`},{currencies:`EUR`,countries:`EU,GB`,types:`SEPA`,fields:`bicSwift,iban`},{currencies:`GBP`,countries:`GB`,types:`FPS`,fields:`accountNumber,sortCode(6)`},{currencies:`AED`,countries:`AE`,types:`UAEFTS`,fields:`iban(AE),bicSwift`},{currencies:`CHF`,countries:`CH`,types:`SIC`,fields:`iban(CH),bicSwift`},{currencies:`CZK`,countries:`CZ`,types:`CERTIS`,fields:`iban(CZ),bicSwift`},{currencies:`DKK`,countries:`DK`,types:`DKSMC`,fields:`iban(DK),bicSwift`},{currencies:`HKD`,countries:`HK`,types:`CCASS`,fields:`accountNumber,bankCode(3),branchCode(3)`},{currencies:`NOK`,countries:`NO`,types:`NICS`,fields:`iban(NO),bicSwift`},{currencies:`PLN`,countries:`PL`,types:`SORBNET`,fields:`iban(PL),bicSwift`},{currencies:`SEK`,countries:`SE`,types:`RIX`,fields:`iban(SE),bicSwift`},{currencies:`ZAR`,countries:`ZA`,types:`SAMOS`,fields:`accountNumber,bicSwift`},{currencies:`ILS`,countries:`IL`,types:`ZAHAV`,fields:`iban(IL),bicSwift`},{currencies:`AUD`,countries:`AU`,types:`NPP`,fields:`accountNumber,bsbCode(6-9)`},{currencies:`SGD`,countries:`SG`,types:`IBG`,fields:`accountNumber,bankCode(4),branchCode(3)`},{currencies:`NZD`,countries:`NZ`,types:`BECS`,fields:`accountNumber,bsbCode(6)`},{currencies:`MXN`,countries:`MX`,types:`SPEI`,fields:`accountNumber,bankCode(3),branchCode(3)`}];const SWIFT_ROWS=[{currencies:`USD,CAD,GBP,AED,CHF,CZK,DKK,HKD,NOK,PLN,SEK,ZAR,ILS,AUD,NZD`,countries:`EU`,types:`Swift`,fields:`bicSwift,iban`},{currencies:`USD,AED,CHF,CZK,DKK,HKD,NOK,PLN,SEK,ZAR,ILS,AUD,NZD`,countries:`GB`,types:`Swift`,fields:`bicSwift,iban`},{currencies:`USD,EUR,AED,CHF,CZK,DKK,HKD,NOK,PLN,SEK,ZAR,ILS,AUD,NZD`,countries:`AE`,types:`Swift`,fields:`bicSwift,iban`},{currencies:`USD,AED,CHF,CZK,DKK,HKD,NOK,PLN,SEK,ZAR,ILS`,countries:`EG,QA,SA`,types:`Swift`,fields:`bicSwift(8-11),iban`},{currencies:`EUR,GBP`,countries:`TR`,types:`Swift`,fields:`bicSwift,iban`},{currencies:`EUR`,countries:`SC,CH`,types:`Swift`,fields:`bicSwift,iban`},{currencies:`AUD`,countries:`DK`,types:`Swift`,fields:`bicSwift,iban`},{currencies:`USD,AED,CHF,CZK,DKK,HKD,NOK,PLN,SEK,ZAR,ILS`,countries:`CA,MY,MV,MX,TH,PA,UY`,types:`Swift`,fields:`accountNumber,bicSwift`},{currencies:`USD,EUR,AED,CHF,CZK,DKK,HKD,NOK,PLN,SEK,ZAR,ILS`,countries:`SG,ID`,types:`Swift`,fields:`accountNumber,bicSwift`},{currencies:`USD,CAD,EUR,GBP,AED,CHF,CZK,DKK,NOK,PLN,SEK,ZAR,ILS`,countries:`HK`,types:`Swift`,fields:`accountNumber,bicSwift`},{currencies:`EUR`,countries:`ZA`,types:`Swift`,fields:`accountNumber,bicSwift`},{currencies:`CAD,AED,CHF,CZK,DKK,HKD,NOK,PLN,SEK,ZAR,ILS`,countries:`US`,types:`Swift`,fields:`accountNumber,bicSwift,routingCode(9)`},{currencies:`USD,AED,CHF,CZK,DKK,HKD,NOK,PLN,SEK,ZAR,ILS`,countries:`IN`,types:`Swift`,fields:`bankAddress,accountNumber,bicSwift`},{currencies:`USD,AED,CHF,CZK,DKK,HKD,NOK,PLN,SEK,ZAR,ILS`,countries:`CO`,types:`Swift`,fields:`accountNumber,bicSwift`,note:`Contact phone and tax ID are also required at the contact level for CO.`}];const ACCOUNT_NUMBER_RULES={US:`1–17 chars, alphanumeric`,CA:`7–12 chars, alphanumeric`,GB:`exactly 8 digits`,AU:`1–9 digits`,SG:`6–21 chars, alphanumeric`,HK:`6–21 chars, alphanumeric`,MY:`4–19 digits`,MV:`10–17 digits`,IN:`4–20 digits`,ID:`9–20 chars, alphanumeric`,MX:`exactly 18 digits (CLABE)`,TH:`8–15 digits`,CO:`8–20 digits`,ZA:`9–17 digits`,NZ:`10–16 digits`,PA:`5–20 digits`,UY:`4–16 digits`};const BANK_STATE_COUNTRIES=[`US`,`CA`,`NZ`,`AU`];const CURRENCY_NAMES={USD:`United States Dollar`,CAD:`Canadian Dollar`,EUR:`Euro`,GBP:`British Pound`,AED:`United Arab Emirates Dirham`,CHF:`Swiss Franc`,CZK:`Czech Koruna`,DKK:`Danish Krone`,HKD:`Hong Kong Dollar`,NOK:`Norwegian Krone`,PLN:`Polish Zloty`,SEK:`Swedish Krona`,ZAR:`South African Rand`,ILS:`Israeli New Shekel`,AUD:`Australian Dollar`,SGD:`Singapore Dollar`,NZD:`New Zealand Dollar`,MXN:`Mexican Peso`};const COUNTRY_NAMES={AD:`Andorra`,AE:`United Arab Emirates`,AT:`Austria`,AU:`Australia`,AX:`Åland Islands`,BE:`Belgium`,BG:`Bulgaria`,BL:`Saint Barthélemy`,CA:`Canada`,CH:`Switzerland`,CO:`Colombia`,CY:`Cyprus`,CZ:`Czech Republic`,DE:`Germany`,DK:`Denmark`,EE:`Estonia`,EG:`Egypt`,ES:`Spain`,FI:`Finland`,FR:`France`,GB:`United Kingdom`,GF:`French Guiana`,GP:`Guadeloupe`,GR:`Greece`,HK:`Hong Kong`,HR:`Croatia`,HU:`Hungary`,ID:`Indonesia`,IE:`Ireland`,IL:`Israel`,IN:`India`,IS:`Iceland`,IT:`Italy`,LI:`Liechtenstein`,LT:`Lithuania`,LU:`Luxembourg`,LV:`Latvia`,MC:`Monaco`,MF:`Saint Martin (French part)`,MQ:`Martinique`,MT:`Malta`,MV:`Maldives`,MX:`Mexico`,MY:`Malaysia`,NL:`Netherlands`,NO:`Norway`,NZ:`New Zealand`,PA:`Panama`,PL:`Poland`,PM:`Saint Pierre and Miquelon`,PT:`Portugal`,QA:`Qatar`,RE:`Reunion`,RO:`Romania`,SA:`Saudi Arabia`,SC:`Seychelles`,SE:`Sweden`,SG:`Singapore`,SI:`Slovenia`,SK:`Slovakia`,SM:`San Marino`,TH:`Thailand`,TR:`Türkiye`,US:`United States of America`,UY:`Uruguay`,VA:`Holy See (Vatican City State)`,YT:`Mayotte`,ZA:`South Africa`};const EU_COUNTRIES=[`AD`,`AT`,`BE`,`BG`,`HR`,`CY`,`CZ`,`DK`,`EE`,`FI`,`AX`,`FR`,`GF`,`GP`,`MQ`,`YT`,`RE`,`DE`,`GR`,`HU`,`IS`,`IE`,`IT`,`LV`,`LT`,`LU`,`MT`,`MC`,`NL`,`NO`,`PL`,`PT`,`RO`,`SK`,`SI`,`ES`,`SE`,`LI`,`BL`,`MF`,`PM`,`SM`,`VA`];const currencyLabel=code=>CURRENCY_NAMES[code]?code+` - `+CURRENCY_NAMES[code]:code;const countryLabel=code=>COUNTRY_NAMES[code]?code+` - `+COUNTRY_NAMES[code]:code;const STATE_DATA={US:[{code:`AK`,name:`Alaska`},{code:`AL`,name:`Alabama`},{code:`AR`,name:`Arkansas`},{code:`AZ`,name:`Arizona`},{code:`CA`,name:`California`},{code:`CO`,name:`Colorado`},{code:`CT`,name:`Connecticut`},{code:`DC`,name:`District of Columbia`},{code:`DE`,name:`Delaware`},{code:`FL`,name:`Florida`},{code:`GA`,name:`Georgia`},{code:`HI`,name:`Hawaii`},{code:`IA`,name:`Iowa`},{code:`ID`,name:`Idaho`},{code:`IL`,name:`Illinois`},{code:`IN`,name:`Indiana`},{code:`KS`,name:`Kansas`},{code:`KY`,name:`Kentucky`},{code:`LA`,name:`Louisiana`},{code:`MA`,name:`Massachusetts`},{code:`MD`,name:`Maryland`},{code:`ME`,name:`Maine`},{code:`MI`,name:`Michigan`},{code:`MN`,name:`Minnesota`},{code:`MO`,name:`Missouri`},{code:`MS`,name:`Mississippi`},{code:`MT`,name:`Montana`},{code:`NC`,name:`North Carolina`},{code:`ND`,name:`North Dakota`},{code:`NE`,name:`Nebraska`},{code:`NH`,name:`New Hampshire`},{code:`NJ`,name:`New Jersey`},{code:`NM`,name:`New Mexico`},{code:`NV`,name:`Nevada`},{code:`NY`,name:`New York`},{code:`OH`,name:`Ohio`},{code:`OK`,name:`Oklahoma`},{code:`OR`,name:`Oregon`},{code:`PA`,name:`Pennsylvania`},{code:`RI`,name:`Rhode Island`},{code:`SC`,name:`South Carolina`},{code:`SD`,name:`South Dakota`},{code:`TN`,name:`Tennessee`},{code:`TX`,name:`Texas`},{code:`UT`,name:`Utah`},{code:`VA`,name:`Virginia`},{code:`VT`,name:`Vermont`},{code:`WA`,name:`Washington`},{code:`WI`,name:`Wisconsin`},{code:`WV`,name:`West Virginia`},{code:`WY`,name:`Wyoming`}],CA:[{code:`AB`,name:`Alberta`},{code:`BC`,name:`British Columbia`},{code:`MB`,name:`Manitoba`},{code:`NB`,name:`New Brunswick`},{code:`NL`,name:`Newfoundland and Labrador`},{code:`NS`,name:`Nova Scotia`},{code:`NT`,name:`Northwest Territories`},{code:`NU`,name:`Nunavut`},{code:`ON`,name:`Ontario`},{code:`PE`,name:`Prince Edward Island`},{code:`QC`,name:`Quebec`},{code:`SK`,name:`Saskatchewan`},{code:`YT`,name:`Yukon`}],NZ:[{code:`AUK`,name:`Auckland Region`},{code:`BOP`,name:`Bay of Plenty Region`},{code:`CAN`,name:`Canterbury Region`},{code:`CIT`,name:`Chatham Islands`},{code:`GIS`,name:`Gisborne District`},{code:`HKB`,name:`Hawke's Bay Region`},{code:`MBH`,name:`Marlborough Region`},{code:`MWT`,name:`Manawatu-Wanganui Region`},{code:`NSN`,name:`Nelson Region`},{code:`NTL`,name:`Northland Region`},{code:`OTA`,name:`Otago Region`},{code:`STL`,name:`Southland Region`},{code:`TAS`,name:`Tasman District`},{code:`TKI`,name:`Taranaki Region`},{code:`WGN`,name:`Wellington Region`},{code:`WKO`,name:`Waikato Region`},{code:`WTC`,name:`West Coast Region`}],AU:[{code:`ACT`,name:`Australian Capital Territory`},{code:`NSW`,name:`New South Wales`},{code:`NT`,name:`Northern Territory`},{code:`QLD`,name:`Queensland`},{code:`SA`,name:`South Australia`},{code:`TAS`,name:`Tasmania`},{code:`VIC`,name:`Victoria`},{code:`WA`,name:`Western Australia`}]};const expand=rows=>{const out=[];rows.forEach(row=>{row.currencies.split(`,`).forEach(cur=>{row.countries.split(`,`).forEach(ctry=>{row.types.split(`,`).forEach(t=>{out.push({currency:cur,country:ctry,type:t,fieldsRaw:row.fields,note:row.note})})})})});return out};const ALL_ROWS=useMemo(()=>expand(LOCAL_RAILS).concat(expand(SWIFT_ROWS)),[]);const ALL_CURRENCIES=useMemo(()=>Array.from(new Set(ALL_ROWS.map(r=>r.currency))).sort(),[ALL_ROWS]);const countriesForCurrency=cur=>{const set=new Set;let hasEuBucket=false;ALL_ROWS.forEach(r=>{if(r.currency!==cur)return;if(r.country===`EU`){hasEuBucket=true;return}set.add(r.country)});if(hasEuBucket)EU_COUNTRIES.forEach(c=>set.add(c));return Array.from(set).sort()};const rowsFor=(cur,ctry)=>{const exact=ALL_ROWS.filter(r=>r.currency===cur\u0026\u0026r.country===ctry);if(exact.length>0)return exact;if(EU_COUNTRIES.indexOf(ctry)>-1){return ALL_ROWS.filter(r=>r.currency===cur\u0026\u0026r.country===`EU`)}return[]};const fieldRule=(spec,ctry,railType)=>{const m=spec.match(/^([a-zA-Z]+)(?:\\(([^)]+)\\))?$/);const name=m[1];const arg=m[2];switch(name){case`accountNumber`:return{name,rule:ACCOUNT_NUMBER_RULES[ctry]||`Length and format vary by bank country`};case`iban`:return arg?{name,rule:`Valid IBAN, must be prefixed `+arg,sub:`This rail requires an `+arg+`-prefixed IBAN specifically.`}:{name,rule:`Valid IBAN (any country accepted)`,sub:railType?railType+` destinations accept any valid IBAN.`:`Any valid IBAN is accepted.`};case`bicSwift`:return{name,rule:arg?arg.replace(`-`,` or `)+` characters`:`8 or 11 characters`};case`routingCode`:return{name,rule:arg+` digits`,sub:`US ABA / Fedwire routing number.`};case`sortCode`:return{name,rule:`Exactly `+arg+` digits`,sub:`GB bank sort code.`};case`bankCode`:return{name,rule:arg+` digits`,sub:`Meaning varies by rail — not comparable across currencies.`};case`branchCode`:return{name,rule:arg+` digits`,sub:`Meaning varies by rail — not comparable across currencies.`};case`bsbCode`:return{name,rule:arg.indexOf(`-`)>-1?arg.replace(`-`,`–`)+` digits`:`Exactly `+arg+` digits`};case`bankAddress`:return{name,rule:`Required for this destination`,sub:`No format constraint beyond being present.`};default:return{name,rule:``}}};const exampleValue=(fieldName,ctry)=>{switch(fieldName){case`accountNumber`:return`10029384756`;case`routingCode`:return`114000093`;case`sortCode`:return`203045`;case`bicSwift`:return`EXAMPLEX`;case`iban`:return(ctry.length===2?ctry:`GB`)+`00EXAMPLE0000000000`;case`bankCode`:return`0001`;case`branchCode`:return`00001`;case`bsbCode`:return`000000`;case`bankAddress`:return`100 Example Street, City`;default:return``}};const[currency,setCurrency]=useState(`USD`);const[country,setCountry]=useState(`US`);const[type,setType]=useState(`ACH`);const[stateByCountry,setStateByCountry]=useState({US:`AK`,CA:`AB`,NZ:`AUK`,AU:`ACT`});const[copied,setCopied]=useState(false);const[copyFailed,setCopyFailed]=useState(false);const countries=countriesForCurrency(currency);const matches=rowsFor(currency,country);const types=matches.map(m=>m.type);const activeType=types.indexOf(type)>-1?type:types[0];const row=matches.find(m=>m.type===activeType)||matches[0];const shapesDiffer=new Set(matches.map(m=>m.fieldsRaw)).size>1;const onCurrencyChange=e=>{const cur=e.target.value;setCurrency(cur);const ctrys=countriesForCurrency(cur);if(ctrys.indexOf(country)===-1)setCountry(ctrys[0])};if(!row)return null;const needsState=BANK_STATE_COUNTRIES.indexOf(country)>-1;const currentState=needsState?stateByCountry[country]||STATE_DATA[country][0].code:null;const fieldInfos=row.fieldsRaw.split(`,`).map(spec=>fieldRule(spec,country,row.type));const payoutFields={};fieldInfos.forEach(info=>{payoutFields[info.name]=exampleValue(info.name,country)});const ordered={type:row.type,currency,bankName:`Example Bank`,bankCountry:country};if(needsState)ordered.bankState=currentState;Object.keys(payoutFields).forEach(name=>{ordered[name]=payoutFields[name]});const json=JSON.stringify(ordered,null,2);const highlighted=json.replace(/\"([^\"]+)\":/g,`\u003cspan class=\"tok-key\">\"$1\"\u003c/span>:`).replace(/: \"([^\"]*)\"/g,`: \u003cspan class=\"tok-str\">\"$1\"\u003c/span>`);const onCopied=()=>{setCopied(true);setTimeout(()=>setCopied(false),1600)};const onCopyFailed=()=>{setCopyFailed(true);setTimeout(()=>setCopyFailed(false),2200)};const fallbackCopy=()=>{try{const textarea=document.createElement(`textarea`);textarea.value=json;textarea.style.position=`fixed`;textarea.style.opacity=`0`;document.body.appendChild(textarea);textarea.focus();textarea.select();const ok=document.execCommand(`copy`);document.body.removeChild(textarea);if(ok)onCopied();else onCopyFailed()}catch(e){onCopyFailed()}};const copyJson=()=>{if(navigator.clipboard\u0026\u0026navigator.clipboard.writeText){navigator.clipboard.writeText(json).then(onCopied).catch(fallbackCopy)}else{fallbackCopy()}};return _jsx(`div`,{className:`pse-wrap`,children:_jsxs(`div`,{className:`pse`,children:[_jsx(`style`,{children:`\n .pse {\n --pse-surface: #ffffff;\n --pse-surface-2: #f4f6fa;\n --pse-ink: #0c0e11;\n --pse-ink-muted: #515357;\n --pse-ink-faint: #717377;\n --pse-accent: #2563eb;\n --pse-accent-ink: #1d4ed8;\n --pse-accent-soft: rgba(37, 99, 235, 0.1);\n --pse-amber: #b45309;\n --pse-amber-soft: #fef3e0;\n --pse-green: #15803d;\n --pse-green-soft: #e9f9ee;\n --pse-border: #e0e2e6;\n --pse-code-bg: #f4f6fa;\n --pse-shadow: 0 1px 2px rgba(12, 14, 17, 0.04), 0 8px 24px rgba(12, 14, 17, 0.06);\n color: var(--pse-ink);\n font-variant-numeric: tabular-nums;\n display: grid;\n grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);\n align-items: stretch;\n column-gap: 0;\n row-gap: 16px;\n margin-top: 1.5rem;\n }\n .pse-wrap {\n container-type: inline-size;\n container-name: pse;\n }\n .dark .pse {\n --pse-surface: #14161a;\n --pse-surface-2: #181a1e;\n --pse-ink: #f4f6fa;\n --pse-ink-muted: #a0a2a6;\n --pse-ink-faint: #717377;\n --pse-accent: #3d82f7;\n --pse-accent-ink: #6aa0f9;\n --pse-accent-soft: rgba(96, 165, 250, 0.14);\n --pse-amber: #f5a524;\n --pse-amber-soft: rgba(245, 165, 36, 0.12);\n --pse-green: #4ade80;\n --pse-green-soft: rgba(74, 222, 128, 0.14);\n --pse-border: #27292c;\n --pse-code-bg: #0e0f12;\n --pse-shadow: 0 1px 2px rgba(0, 0, 0, 0.35), 0 8px 24px rgba(0, 0, 0, 0.4);\n }\n .pse * { box-sizing: border-box; }\n @media (prefers-reduced-motion: reduce) {\n .pse * { transition: none !important; animation: none !important; }\n }\n .pse .pse-panel {\n background: var(--pse-surface);\n border: 1px solid var(--pse-border);\n border-radius: 12px;\n box-shadow: var(--pse-shadow);\n }\n /* The controls sit in the narrow left column now, so they run as a\n single column — splitting them in two there would squeeze the\n select labels, which already truncate at this width. */\n .pse .pse-controls {\n padding: 16px 18px;\n display: grid;\n grid-template-columns: 1fr;\n gap: 12px;\n align-items: start;\n }\n .pse .pse-field-stack { display: flex; flex-direction: column; gap: 12px; }\n .pse .pse-field { display: flex; flex-direction: column; gap: 6px; min-width: 0; }\n .pse .pse-field label {\n font-size: 11px;\n font-weight: 600;\n letter-spacing: 0.07em;\n text-transform: uppercase;\n color: var(--pse-ink-muted);\n }\n .pse select {\n appearance: none;\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;\n font-size: 12px;\n font-weight: 500;\n background: var(--pse-surface-2) url(\"data:image/svg+xml;utf8,\u003csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%234b5768' stroke-width='2'>\u003cpath d='M6 9l6 6 6-6'/>\u003c/svg>\") no-repeat right 12px center;\n color: var(--pse-ink);\n border: 1px solid var(--pse-border);\n border-radius: 8px;\n padding: 8px 30px 8px 10px;\n cursor: pointer;\n width: 100%;\n }\n .pse select:disabled { opacity: 0.5; cursor: not-allowed; }\n .pse select:focus-visible { outline: 2px solid var(--pse-accent); outline-offset: 1px; }\n .pse select:disabled {\n opacity: 1;\n background-color: var(--pse-surface);\n color: var(--pse-ink-muted);\n cursor: not-allowed;\n }\n .pse .pse-method-note {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--pse-amber);\n min-height: 16px;\n }\n .pse .pse-method-note.pse-single {\n color: var(--pse-ink-faint);\n }\n .pse .pse-method-note .pse-dot {\n width: 6px; height: 6px; border-radius: 50%;\n background: var(--pse-amber);\n flex-shrink: 0;\n }\n /* Controls and Required fields read as one merged panel across row 1:\n the column gap is zero, the row stretches so both are the same\n height, and the controls' right border becomes the internal\n divider. Example request spans the full width below.\n display:contents promotes the two result cards onto the .pse grid\n so the markup stays as authored. */\n .pse > style { display: none; }\n .pse .pse-results { display: contents; }\n .pse .pse-controls {\n grid-column: 1;\n grid-row: 1;\n border-radius: 12px 0 0 12px;\n }\n .pse .pse-results > .pse-card:first-child {\n grid-column: 2;\n grid-row: 1;\n border-left: none;\n border-radius: 0 12px 12px 0;\n }\n .pse .pse-results > .pse-card:last-child {\n grid-column: 1 / span 2;\n grid-row: 2;\n }\n /* Too narrow to sit side by side — one column, each panel closed off\n on its own again. */\n @container pse (max-width: 560px) {\n .pse { grid-template-columns: 1fr; }\n .pse .pse-controls,\n .pse .pse-results > .pse-card:first-child,\n .pse .pse-results > .pse-card:last-child {\n grid-column: 1;\n grid-row: auto;\n border: 1px solid var(--pse-border);\n border-radius: 12px;\n }\n }\n .pse .pse-card { padding: 16px 18px 20px; }\n .pse .pse-card h2 {\n font-size: 13px;\n font-weight: 600;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n color: var(--pse-ink-muted);\n margin: 0 0 12px;\n }\n .pse .pse-field-list { display: flex; flex-direction: column; gap: 0; margin: 0; }\n .pse .pse-field-row {\n display: flex;\n flex-direction: column;\n gap: 4px;\n padding: 9px 0;\n margin: 0;\n border-top: 1px solid var(--pse-border);\n }\n .pse .pse-field-row:first-child { border-top: none; padding-top: 0; }\n .pse code.pse-code {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;\n font-size: 13.5px;\n background: var(--pse-code-bg);\n border: 1px solid var(--pse-border);\n border-radius: 4px;\n padding: 2px 6px;\n }\n /* This site's theme decorates every \u003ccode> with backtick characters\n via ::before/::after. Our chips already signal \"code\" with their\n own background/border, so drop the extra backticks to avoid\n double-signaling the same thing. */\n .pse code.pse-code::before,\n .pse code.pse-code::after {\n content: none !important;\n }\n .pse .pse-field-row .pse-rule {\n font-size: 13.5px;\n color: var(--pse-ink);\n line-height: 1.5;\n }\n .pse .pse-field-row .pse-rule .pse-sub {\n display: block;\n font-size: 12px;\n color: var(--pse-ink-faint);\n margin-top: 2px;\n }\n .pse .pse-field-row .pse-rule code.pse-code { font-size: 12.5px; padding: 1px 5px; }\n .pse p { margin: 0; }\n .pse .pse-case-note {\n margin: 14px 0 0;\n padding: 10px 14px;\n background: var(--pse-amber-soft);\n border-left: 3px solid var(--pse-amber);\n border-radius: 0 6px 6px 0;\n font-size: 13px;\n color: var(--pse-ink);\n }\n .pse .pse-example-head {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 16px;\n }\n .pse .pse-example-head h2 { margin: 0; }\n .pse .pse-copy-btn {\n appearance: none;\n border: 1px solid var(--pse-border);\n background: var(--pse-surface-2);\n color: var(--pse-ink);\n font-size: 12.5px;\n font-weight: 600;\n padding: 6px 12px;\n border-radius: 7px;\n cursor: pointer;\n }\n .pse .pse-copy-btn:hover { background: var(--pse-code-bg); }\n .pse .pse-copy-btn:focus-visible { outline: 2px solid var(--pse-accent); outline-offset: 1px; }\n .pse .pse-copy-btn.done { background: var(--pse-green-soft); border-color: var(--pse-green); color: var(--pse-green); }\n .pse .pse-copy-btn.failed { background: var(--pse-amber-soft); border-color: var(--pse-amber); color: var(--pse-amber); }\n .pse .pse-json {\n display: block;\n margin: 0;\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;\n font-size: 13px;\n line-height: 1.6;\n background: var(--pse-code-bg);\n border: 1px solid var(--pse-border);\n border-radius: 10px;\n padding: 16px 18px;\n overflow-x: auto !important;\n white-space: pre !important;\n word-break: normal !important;\n color: var(--pse-ink);\n }\n .pse .tok-key { color: var(--pse-accent-ink); }\n .pse .tok-str { color: var(--pse-green); }\n `}),_jsxs(`div`,{className:`pse-panel pse-controls`,children:[_jsxs(`div`,{className:`pse-field`,children:[_jsx(`label`,{htmlFor:`pse-sel-currency`,children:`Currency`}),_jsx(`select`,{id:`pse-sel-currency`,value:currency,onChange:onCurrencyChange,children:ALL_CURRENCIES.map(c=>_jsx(`option`,{value:c,children:currencyLabel(c)},c))})]}),_jsxs(`div`,{className:`pse-field-stack`,children:[_jsxs(`div`,{className:`pse-field`,children:[_jsx(`label`,{htmlFor:`pse-sel-country`,children:`Bank Country`}),_jsx(`select`,{id:`pse-sel-country`,value:country,onChange:e=>setCountry(e.target.value),children:countries.map(c=>_jsx(`option`,{value:c,children:countryLabel(c)},c))})]}),needsState\u0026\u0026_jsxs(`div`,{className:`pse-field`,children:[_jsx(`label`,{htmlFor:`pse-sel-state`,children:`State / Province`}),_jsx(`select`,{id:`pse-sel-state`,value:currentState,onChange:e=>setStateByCountry({...stateByCountry,[country]:e.target.value}),children:STATE_DATA[country].map(s=>_jsxs(`option`,{value:s.code,children:[s.code,` — `,s.name]},s.code))})]})]}),_jsxs(`div`,{className:`pse-field`,children:[_jsx(`label`,{htmlFor:`pse-sel-type`,children:`Payout Type`}),_jsx(`select`,{id:`pse-sel-type`,value:activeType,onChange:e=>setType(e.target.value),disabled:types.length\u003c=1,children:types.map(t=>_jsx(`option`,{value:t,children:t},t))}),_jsx(`div`,{className:`pse-method-note`+(!shapesDiffer?` pse-single`:``),children:types.length>1?shapesDiffer?_jsxs(_Fragment,{children:[_jsx(`span`,{className:`pse-dot`}),` `,types.length,` payout types available for this pair — shapes differ, choose carefully.`]}):`${types.length} payout types available — identical field requirements either way.`:`Only payout type for this pair.`})]})]}),_jsxs(`div`,{className:`pse-results`,children:[_jsxs(`div`,{className:`pse-panel pse-card`,children:[_jsx(`h2`,{children:`Required fields`}),_jsxs(`div`,{className:`pse-field-list`,children:[needsState\u0026\u0026_jsxs(`div`,{className:`pse-field-row`,children:[_jsx(`div`,{children:_jsx(`code`,{className:`pse-code`,children:`bankState`})}),_jsxs(`div`,{className:`pse-rule`,children:[`ISO state/province code — required because`,` `,_jsx(`code`,{className:`pse-code`,children:`bankCountry`}),` is `,country,_jsxs(`span`,{className:`pse-sub`,children:[`Selected above: `,currentState,`.`]})]})]}),fieldInfos.map((info,i)=>_jsxs(`div`,{className:`pse-field-row`,children:[_jsx(`div`,{children:_jsx(`code`,{className:`pse-code`,children:info.name})}),_jsxs(`div`,{className:`pse-rule`,children:[info.rule,info.sub\u0026\u0026_jsx(`span`,{className:`pse-sub`,children:info.sub})]})]},info.name+i))]}),row.note\u0026\u0026_jsx(`div`,{className:`pse-case-note`,children:row.note})]}),_jsxs(`div`,{className:`pse-panel pse-card`,children:[_jsxs(`div`,{className:`pse-example-head`,children:[_jsx(`h2`,{children:`Example request`}),_jsx(`button`,{type:`button`,className:`pse-copy-btn`+(copied?` done`:``)+(copyFailed?` failed`:``),onClick:copyJson,children:copied?`Copied`:copyFailed?`Couldn't copy — select below`:`Copy JSON`})]}),_jsx(`div`,{className:`pse-json`,dangerouslySetInnerHTML:{__html:highlighted}})]})]})]})})};function _createMdxContent(props){const _components={code:`code`,p:`p`,..._provideComponents(),...props.components},{_MdxComponentBoundary}=_components;if(!_MdxComponentBoundary)_missingMdxReference(`_MdxComponentBoundary`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Select a currency, bank country, and payout type below to see exactly which `,_jsx(_components.code,{children:`payoutMethod`}),` fields are required and their format rules, plus a matching example request.`]}),`\n`,_jsx(_MdxComponentBoundary,{name:`PayoutSchemaExplorer`,children:_jsx(PayoutSchemaExplorer,{})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{PayoutSchemaExplorer,default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"playground":"simple","title":"Create Vendor","openapi":"POST /vendors","description":"Creates a vendor with a single payout method.\nThe bank account fields required in `payoutMethod` depend on the method's currency, bank country and type.","href":"/api-reference/vendors/create-vendor"}}},"mdxSourceWithNoJs":null,"noJsSplices":[[159,26096,"null;function _creat"]]},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"Create","responses":{"201":"69acb3f7-3b81-4f6c-b02d-658d6bf934d7","403":"6ac7afba-8aa4-4662-9cd8-a694360b759e","409":"97dec98b-06e9-4950-b04d-c04411adcccc","422":"855e5a8e-a2d8-48fa-8dfe-cf161aa90f75","502":"3ec7e4c9-6616-42e9-b514-d2445d84add0"},"description":"Creates a vendor with a single payout method.\nThe bank account fields required in `payoutMethod` depend on the method's currency, bank country and type.","tags":["Vendors"],"security":["d8c11d2b-98be-4495-ace1-b12b8dd1b6d0"],"parameters":[],"requestBody":"70843733-d810-49ff-86ab-fab4a31d5ec7","method":"post","type":"path","servers":["9b991205-4bbf-4bb3-90df-29d774f4e9c6"],"path":"/vendors","baseUrlOptions":["https://api.grainfinance.co/v1"],"title":"","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"Request body for `POST /v1/vendors`. Creates a vendor with a single payout method. The conditional\ncontact fields (`contactState`, `contactTaxId`, `contactPhoneNumber`, `companyRegisterNumber`) are\nrequired for some countries.","properties":{"externalVendorId":{"type":"string","example":"vendor_001","description":"The vendor id, as identified within your system.","pattern":"^[A-Za-z0-9_.\\-]{1,64}$","isRequired":true,"uniqueKey":"externalVendorId","typeLabel":"string"},"contactFullName":{"type":"string","description":"The full name of the vendor's contact person or business.","example":"Acme Supplies Ltd","isRequired":true,"uniqueKey":"contactFullName","typeLabel":"string"},"contactCountry":{"type":"string","example":"US","description":"The alpha-2 ISO 3166 country code of the vendor.","pattern":"^[A-Za-z]{2}$","isRequired":true,"uniqueKey":"contactCountry","typeLabel":"string"},"contactCity":{"type":"string","description":"The city of the vendor's address.","example":"New York","isRequired":true,"uniqueKey":"contactCity","typeLabel":"string"},"contactEmail":{"type":"string","description":"The email address of the vendor.","example":"billing@acmesupplies.com","isRequired":true,"uniqueKey":"contactEmail","typeLabel":"string"},"contactStreetName":{"type":"string","description":"The street name of the vendor's address.","example":"Madison Avenue","isRequired":true,"uniqueKey":"contactStreetName","typeLabel":"string"},"contactBuildingName":{"type":"string","description":"The building name or number of the vendor's address.","example":"383","isRequired":true,"uniqueKey":"contactBuildingName","typeLabel":"string"},"contactPostalCode":{"type":"string","description":"The postal code of the vendor's address.","example":"10017","isRequired":true,"uniqueKey":"contactPostalCode","typeLabel":"string"},"payoutMethod":{"description":"The payout method to register for the vendor.","properties":{"type":{"enum":["SWIFT","SEPA","WIRE","ACH","FPS","CA ACSS","NPP","IBG","BECS","CCASS","TEF","UAEFTS","SIC","CERTIS","DKSMC","NICS","SORBNET","RIX","SAMOS","ZAHAV","SARIE","QPS"],"type":"string","description":"The payment method used to send payouts to this bank account.","example":"SEPA","isRequired":true,"uniqueKey":"payoutMethod.type","typeLabel":"enum\u003cstring>"},"currency":{"type":"string","example":"EUR","description":"The alpha-3 ISO 4217 currency code of payouts sent with this method.","pattern":"^[A-Z]{3}$","isRequired":true,"uniqueKey":"payoutMethod.currency","typeLabel":"string"},"bankName":{"type":"string","description":"The name of the bank holding the account.","example":"JPMorgan Chase Bank, N.A.","isRequired":true,"uniqueKey":"payoutMethod.bankName","typeLabel":"string"},"bankCountry":{"type":"string","example":"US","description":"The alpha-2 ISO 3166 country code of the bank.","pattern":"^[A-Za-z]{2}$","isRequired":true,"uniqueKey":"payoutMethod.bankCountry","typeLabel":"string"},"bankState":{"type":"string","description":"The ISO state code of the bank's location, when applicable.","example":"NY","uniqueKey":"payoutMethod.bankState","typeLabel":"string"},"accountNumber":{"type":"string","description":"The account number, when applicable.","example":"8290041523","uniqueKey":"payoutMethod.accountNumber","typeLabel":"string"},"iban":{"type":"string","description":"The IBAN of the account, when applicable.","example":"DE89370400440532013000","pattern":"^[A-Z0-9]{15,34}$","uniqueKey":"payoutMethod.iban","typeLabel":"string"},"bicSwift":{"type":"string","description":"The SWIFT/BIC code of the bank, when applicable.","example":"CHASUS33XXX","pattern":"^[A-Z]{6}[A-Z0-9]{2}([A-Z0-9]{3})?$","uniqueKey":"payoutMethod.bicSwift","typeLabel":"string"},"routingCode":{"type":"string","description":"Country-specific routing code, when applicable — the nine-digit ABA routing number for USD payouts.","example":"021000021","uniqueKey":"payoutMethod.routingCode","typeLabel":"string"},"bankCode":{"type":"string","description":"Country-specific bank code, when applicable — CAD (EFT), HKD (CCASS), SGD (IBG) and MXN (SPEI) payouts.","example":"004","uniqueKey":"payoutMethod.bankCode","typeLabel":"string"},"branchCode":{"type":"string","description":"Country-specific branch code, when applicable — CAD (EFT), HKD (CCASS), SGD (IBG) and MXN (SPEI) payouts.","example":"081","uniqueKey":"payoutMethod.branchCode","typeLabel":"string"},"sortCode":{"type":"string","description":"UK sort code, when applicable. Six digits, no hyphens.","example":"560036","pattern":"^\\d{6}$","uniqueKey":"payoutMethod.sortCode","typeLabel":"string"},"bsbCode":{"type":"string","description":"Australian BSB code, when applicable. Six digits, no hyphens.","example":"082902","pattern":"^\\d{6}$","uniqueKey":"payoutMethod.bsbCode","typeLabel":"string"},"bankAddress":{"type":"string","description":"The full address of the bank, when provided.","example":"383 Madison Avenue, New York, NY 10017","uniqueKey":"payoutMethod.bankAddress","typeLabel":"string"}},"required":["type","currency","bankName","bankCountry"],"type":"object","additionalProperties":false,"isRequired":true,"uniqueKey":"payoutMethod","typeLabel":"object"},"contactState":{"type":"string","description":"The ISO state code of the vendor's address. Required for vendors in US, CA, NZ and AU.","example":"NY","uniqueKey":"contactState","typeLabel":"string"},"contactTaxId":{"type":"string","description":"The tax id of the vendor. Required for vendors in some countries.","example":"901234567","uniqueKey":"contactTaxId","typeLabel":"string"},"contactPhoneNumber":{"type":"string","description":"The phone number of the vendor's contact. Required for vendors in some countries.","example":"+13212312321","uniqueKey":"contactPhoneNumber","typeLabel":"string"},"companyRegisterNumber":{"type":"string","description":"The company register number of the vendor. Required for vendors in some countries.","example":"514455544","uniqueKey":"companyRegisterNumber","typeLabel":"string"}},"required":["externalVendorId","contactFullName","contactCountry","contactCity","contactEmail","contactStreetName","contactBuildingName","contactPostalCode","payoutMethod"],"type":"object","additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"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"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"69acb3f7-3b81-4f6c-b02d-658d6bf934d7":{"description":"Vendor created","content":{"application/json":{"schema":{"description":"A Vendor represents a payee that payouts can be sent to. Returned by `POST /v1/vendors`,\n`GET /v1/vendors/{vendorId}`, and `GET /v1/vendors`.","properties":{"vendorId":{"type":"string","format":"uuid","pattern":"[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}","description":"The id of the vendor within the Grain platform.","example":"1b0ada1e-fa1b-4cfe-a553-01b340c5650e","isRequired":true,"uniqueKey":"vendorId","typeLabel":"string\u003cuuid>"},"externalVendorId":{"type":"string","example":"vendor_001","description":"The vendor id, as identified within your system.","pattern":"^[A-Za-z0-9_.\\-]{1,64}$","isRequired":true,"uniqueKey":"externalVendorId","typeLabel":"string"},"contact":{"description":"The contact details of the vendor.","properties":{"fullName":{"type":"string","description":"The full name of the vendor's contact person or business.","example":"Acme Supplies Ltd","isRequired":true,"uniqueKey":"contact.fullName","typeLabel":"string"},"country":{"type":"string","example":"US","description":"The alpha-2 ISO 3166 country code of the vendor.","pattern":"^[A-Za-z]{2}$","isRequired":true,"uniqueKey":"contact.country","typeLabel":"string"},"city":{"type":"string","description":"The city of the vendor's address.","example":"New York","isRequired":true,"uniqueKey":"contact.city","typeLabel":"string"},"email":{"type":"string","description":"The email address of the vendor, when provided.","example":"billing@acmesupplies.com","uniqueKey":"contact.email","typeLabel":"string"},"streetName":{"type":"string","description":"The street name of the vendor's address, when provided.","example":"Madison Avenue","uniqueKey":"contact.streetName","typeLabel":"string"},"buildingName":{"type":"string","description":"The building name or number of the vendor's address, when provided.","example":"383","uniqueKey":"contact.buildingName","typeLabel":"string"},"postalCode":{"type":"string","description":"The postal code of the vendor's address, when provided.","example":"10017","uniqueKey":"contact.postalCode","typeLabel":"string"},"state":{"type":"string","description":"The ISO state code of the vendor's address, when provided. Required for vendors in US, CA, NZ and AU.","example":"NY","uniqueKey":"contact.state","typeLabel":"string"},"taxId":{"type":"string","description":"The tax id of the vendor, when provided.","example":"901234567","uniqueKey":"contact.taxId","typeLabel":"string"},"phoneNumber":{"type":"string","description":"The phone number of the vendor's contact, when provided.","example":"+13212312321","uniqueKey":"contact.phoneNumber","typeLabel":"string"},"companyRegisterNumber":{"type":"string","description":"The company register number of the vendor, when provided.","example":"514455544","uniqueKey":"contact.companyRegisterNumber","typeLabel":"string"}},"required":["fullName","country","city"],"type":"object","additionalProperties":false,"isRequired":true,"uniqueKey":"contact","typeLabel":"object"},"payoutMethods":{"items":{"description":"A payout method registered for the vendor — the bank account payouts in `currency` are sent to.\nBank account fields are corridor-specific: only the fields relevant to the method's currency,\ncountry, and type are returned.","properties":{"type":{"enum":["SWIFT","SEPA","WIRE","ACH","FPS","CA ACSS","NPP","IBG","BECS","CCASS","TEF","UAEFTS","SIC","CERTIS","DKSMC","NICS","SORBNET","RIX","SAMOS","ZAHAV","SARIE","QPS"],"type":"string","description":"The payment method used to send payouts to this bank account.","example":"SEPA","isRequired":true,"uniqueKey":"payoutMethods.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"currency":{"type":"string","example":"EUR","description":"The alpha-3 ISO 4217 currency code of payouts sent with this method.","pattern":"^[A-Z]{3}$","isRequired":true,"uniqueKey":"payoutMethods.items.[INDEX].currency","typeLabel":"string"},"bankName":{"type":"string","description":"The name of the bank holding the account.","example":"JPMorgan Chase Bank, N.A.","isRequired":true,"uniqueKey":"payoutMethods.items.[INDEX].bankName","typeLabel":"string"},"bankCountry":{"type":"string","example":"US","description":"The alpha-2 ISO 3166 country code of the bank.","pattern":"^[A-Za-z]{2}$","isRequired":true,"uniqueKey":"payoutMethods.items.[INDEX].bankCountry","typeLabel":"string"},"bankState":{"type":"string","description":"The ISO state code of the bank's location, when applicable.","example":"NY","uniqueKey":"payoutMethods.items.[INDEX].bankState","typeLabel":"string"},"accountNumber":{"type":"string","description":"The account number, when applicable.","example":"8290041523","uniqueKey":"payoutMethods.items.[INDEX].accountNumber","typeLabel":"string"},"iban":{"type":"string","description":"The IBAN of the account, when applicable.","example":"DE89370400440532013000","pattern":"^[A-Z0-9]{15,34}$","uniqueKey":"payoutMethods.items.[INDEX].iban","typeLabel":"string"},"bicSwift":{"type":"string","description":"The SWIFT/BIC code of the bank, when applicable.","example":"CHASUS33XXX","pattern":"^[A-Z]{6}[A-Z0-9]{2}([A-Z0-9]{3})?$","uniqueKey":"payoutMethods.items.[INDEX].bicSwift","typeLabel":"string"},"routingCode":{"type":"string","description":"Country-specific routing code, when applicable — the nine-digit ABA routing number for USD payouts.","example":"021000021","uniqueKey":"payoutMethods.items.[INDEX].routingCode","typeLabel":"string"},"bankCode":{"type":"string","description":"Country-specific bank code, when applicable — CAD (EFT), HKD (CCASS), SGD (IBG) and MXN (SPEI) payouts.","example":"004","uniqueKey":"payoutMethods.items.[INDEX].bankCode","typeLabel":"string"},"branchCode":{"type":"string","description":"Country-specific branch code, when applicable — CAD (EFT), HKD (CCASS), SGD (IBG) and MXN (SPEI) payouts.","example":"081","uniqueKey":"payoutMethods.items.[INDEX].branchCode","typeLabel":"string"},"sortCode":{"type":"string","description":"UK sort code, when applicable. Six digits, no hyphens.","example":"560036","pattern":"^\\d{6}$","uniqueKey":"payoutMethods.items.[INDEX].sortCode","typeLabel":"string"},"bsbCode":{"type":"string","description":"Australian BSB code, when applicable. Six digits, no hyphens.","example":"082902","pattern":"^\\d{6}$","uniqueKey":"payoutMethods.items.[INDEX].bsbCode","typeLabel":"string"},"bankAddress":{"type":"string","description":"The full address of the bank, when provided.","example":"383 Madison Avenue, New York, NY 10017","uniqueKey":"payoutMethods.items.[INDEX].bankAddress","typeLabel":"string"}},"required":["type","currency","bankName","bankCountry"],"type":"object","additionalProperties":false,"uniqueKey":"payoutMethods.items.[INDEX]","typeLabel":"object"},"type":"array","description":"The payout methods registered for the vendor.","isRequired":true,"uniqueKey":"payoutMethods","typeLabel":"object[]"},"createdAt":{"type":"string","example":"2026-05-15T09:12:28.000Z","format":"date-time","description":"When the vendor was created, as an ISO-8601 date-time in UTC.","isRequired":true,"uniqueKey":"createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","example":"2026-05-15T09:12:28.000Z","format":"date-time","description":"When the vendor was last updated, as an ISO-8601 date-time in UTC.","isRequired":true,"uniqueKey":"updatedAt","typeLabel":"string\u003cdate-time>"}},"required":["vendorId","externalVendorId","contact","payoutMethods","createdAt","updatedAt"],"type":"object","additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"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"}}},"exampleType":"generated"}},"exampleType":"generated"},"6ac7afba-8aa4-4662-9cd8-a694360b759e":{"description":"The request failed because the caller has insufficient permissions.","content":{"application/json":{"schema":{"description":"An API Error","properties":{"message":{"type":"string","description":"A short explanation of the error.","example":"Can't perform this action","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"reason":{"type":"string","description":"A detailed description of the reason for the failure.","example":"Supplied object is in *Cancelled* state, which prevents performing this action","uniqueKey":"reason","typeLabel":"string"}},"required":["message"],"type":"object","additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"Can't perform this action","reason":"Supplied object is in *Cancelled* state, which prevents performing this action"}}},"exampleType":"generated"}},"exampleType":"generated"},"97dec98b-06e9-4950-b04d-c04411adcccc":{"description":"The request failed because a business rule constraint was violated.","content":{"application/json":{"schema":{"description":"An API Error","properties":{"message":{"type":"string","description":"A short explanation of the error.","example":"Can't perform this action","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"reason":{"type":"string","description":"A detailed description of the reason for the failure.","example":"Supplied object is in *Cancelled* state, which prevents performing this action","uniqueKey":"reason","typeLabel":"string"}},"required":["message"],"type":"object","additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"Can't perform this action","reason":"Supplied object is in *Cancelled* state, which prevents performing this action"}}},"exampleType":"generated"}},"exampleType":"generated"},"855e5a8e-a2d8-48fa-8dfe-cf161aa90f75":{"description":"The request failed because it is either semantically incorrect or has failed business validation.","content":{"application/json":{"schema":{"description":"An API Error","properties":{"message":{"type":"string","description":"A short explanation of the error.","example":"Can't perform this action","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"reason":{"type":"string","description":"A detailed description of the reason for the failure.","example":"Supplied object is in *Cancelled* state, which prevents performing this action","uniqueKey":"reason","typeLabel":"string"}},"required":["message"],"type":"object","additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"Can't perform this action","reason":"Supplied object is in *Cancelled* state, which prevents performing this action"}}},"exampleType":"generated"}},"exampleType":"generated"},"3ec7e4c9-6616-42e9-b514-d2445d84add0":{"description":"The request failed because an upstream provider was unavailable or returned an unexpected response.","content":{"application/json":{"schema":{"description":"An API Error","properties":{"message":{"type":"string","description":"A short explanation of the error.","example":"Can't perform this action","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"reason":{"type":"string","description":"A detailed description of the reason for the failure.","example":"Supplied object is in *Cancelled* state, which prevents performing this action","uniqueKey":"reason","typeLabel":"string"}},"required":["message"],"type":"object","additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"Can't perform this action","reason":"Supplied object is in *Cancelled* state, which prevents performing this action"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"d8c11d2b-98be-4495-ace1-b12b8dd1b6d0":{"api-key":{"type":"http","scheme":"basic","description":"Basic authentication using the partner API keys from https://console.grainfinance.co/keys","scopes":[],"schemeName":"api-key"}}},"servers":{"9b991205-4bbf-4bb3-90df-29d774f4e9c6":{"url":"https://api.grainfinance.co/v1","description":"Grain API"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"basic","description":"Basic authentication using the partner API keys from https://console.grainfinance.co/keys","scopes":[],"schemeName":"api-key"},"schema":{"title":"Basic Auth","type":"object","description":"Basic authentication using the partner API keys from https://console.grainfinance.co/keys","isRequired":true,"properties":{"username":{"type":"string","uniqueKey":"username","isRequired":true,"typeLabel":"string","deprecated":false},"password":{"type":"string","uniqueKey":"password","isRequired":true,"typeLabel":"string","deprecated":false}},"additionalProperties":false,"deprecated":false},"schemeName":"api-key","name":"Authorization"}],"title":"api-key"}]},"originalFileLocation":"https://grain-docs-assets.s3.us-east-1.amazonaws.com/openapi.yaml"},"subdomain":"grainfinance","siteName":"Grain Developer Portal","title":"Create Vendor - Grain Developer Portal","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-24T08:43:09.645Z","originalFileLocation":"api-reference/vendors/create-vendor.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Creates a vendor with a single payout method. The bank account fields required in payoutMethod depend on the method\u0026#x27;s currency, bank country and type.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Grain Developer Portal\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/grainfinance/OLtSo8SKRqQNdAkd/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/grainfinance/OLtSo8SKRqQNdAkd/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/grainfinance/OLtSo8SKRqQNdAkd/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/grainfinance/OLtSo8SKRqQNdAkd/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/grainfinance/OLtSo8SKRqQNdAkd/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/grainfinance/OLtSo8SKRqQNdAkd/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/grainfinance/OLtSo8SKRqQNdAkd/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/grainfinance/OLtSo8SKRqQNdAkd/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/grainfinance/OLtSo8SKRqQNdAkd/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create Vendor - Grain Developer Portal\">\u003cmeta data-mint-head property=\"og:description\" content=\"Creates a vendor with a single payout method. The bank account fields required in payoutMethod depend on the method\u0026#x27;s currency, bank country and type.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Grain Developer Portal\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.grainfinance.co/api-reference/vendors/create-vendor\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://grainfinance.mintlify.site/_mintlify/api/og/v2?division=Vendors\u0026amp;title=Create+Vendor\u0026amp;description=Creates+a+vendor+with+a+single+payout+method.%0AThe+bank+account+fields+required+in+%60payoutMethod%60+depend+on+the+method%27s+currency%2C+bank+country+and+type.\u0026amp;theme=8c9d9bd44ec042b2b291f319\u0026amp;signature=9a48c8ecbbecd9f523b9e2dbbd342b7c893c27133cd5649465156086c3e8223b\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Create Vendor - Grain Developer Portal\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Creates a vendor with a single payout method. The bank account fields required in payoutMethod depend on the method\u0026#x27;s currency, bank country and type.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://grainfinance.mintlify.site/_mintlify/api/og/v2?division=Vendors\u0026amp;title=Create+Vendor\u0026amp;description=Creates+a+vendor+with+a+single+payout+method.%0AThe+bank+account+fields+required+in+%60payoutMethod%60+depend+on+the+method%27s+currency%2C+bank+country+and+type.\u0026amp;theme=8c9d9bd44ec042b2b291f319\u0026amp;signature=9a48c8ecbbecd9f523b9e2dbbd342b7c893c27133cd5649465156086c3e8223b\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/grainfinance/OLtSo8SKRqQNdAkd/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Grain Developer Portal\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#3D82F7\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.grainfinance.co/api-reference/vendors/create-vendor\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/vendors/create-vendor.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.grainfinance.co/#organization\",\"name\":\"Grain Developer Portal\",\"url\":\"https://docs.grainfinance.co\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/grainfinance/C_1vcIAg0NPjbAeO/logo/light.svg?fit=max\u0026auto=format\u0026n=C_1vcIAg0NPjbAeO\u0026q=85\u0026s=b888c1903085edd1bc00cfa6adfdc039\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.grainfinance.co#website\",\"name\":\"Grain Developer Portal\",\"url\":\"https://docs.grainfinance.co\",\"publisher\":{\"@id\":\"https://docs.grainfinance.co/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.grainfinance.co/api-reference/vendors/create-vendor#webpage\",\"url\":\"https://docs.grainfinance.co/api-reference/vendors/create-vendor\",\"name\":\"Create Vendor\",\"description\":\"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.\",\"dateModified\":\"2026-09-24T08:43:09.645Z\",\"isPartOf\":{\"@id\":\"https://docs.grainfinance.co#website\"},\"breadcrumb\":{\"@id\":\"https://docs.grainfinance.co/api-reference/vendors/create-vendor#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.grainfinance.co/api-reference/vendors/create-vendor#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Grain Developer Portal\",\"item\":\"https://docs.grainfinance.co\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create Vendor\",\"item\":\"https://docs.grainfinance.co/api-reference/vendors/create-vendor\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.grainfinance.co/api-reference/vendors/create-vendor#apireference\",\"headline\":\"Create Vendor\",\"name\":\"Create Vendor\",\"description\":\"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.\",\"url\":\"https://docs.grainfinance.co/api-reference/vendors/create-vendor\",\"mainEntityOfPage\":{\"@id\":\"https://docs.grainfinance.co/api-reference/vendors/create-vendor#webpage\"},\"dateModified\":\"2026-09-24T08:43:09.645Z\",\"publisher\":{\"@id\":\"https://docs.grainfinance.co/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.grainfinance.co#website\"}}]}\u003c/script>","siteName":"Grain Developer Portal","nav":{"global":null,"tabs":[{"tab":"Get Started","pages":[{"title":"Get Started","href":""}]},{"tab":"Concepts","pages":[{"title":"Concepts","href":"/concepts/core-concepts"}]},{"tab":"API","groups":[{"group":"Basics","pages":[{"title":"Conventions","href":"/api-reference/introduction"},{"title":"Authentication","href":"/api-reference/authentication"}]},{"group":"Hedges","pages":[{"group":"Accept Realtime","expanded":true,"pages":[{"title":"Quote","playground":"simple","openapi":"POST /customers/{customerId}/hedges/quote","href":"/api-reference/hedges/get-quote"},{"title":"Accept","playground":"simple","openapi":"POST /customers/{customerId}/hedges/accept-quote","href":"/api-reference/hedges/accept-quote"}]},{"group":"Accept Offline","expanded":true,"pages":[{"title":"Rates","openapi":"GET /offline-rates","href":"/api-reference/hedges/get-offline-rates"},{"title":"Accept","playground":"simple","openapi":"POST /customers/{customerId}/hedges/accept-offline-quote","href":"/api-reference/hedges/accept-offline-quote"}]},{"title":"List Hedges","openapi":"GET /customers/{customerId}/hedges","href":"/api-reference/hedges/list-hedges"},{"title":"Get Hedge","openapi":"GET /customers/{customerId}/hedges/{hedgeId}","href":"/api-reference/hedges/get-hedge"},{"playground":"simple","title":"Cancel Hedge","openapi":"POST /customers/{customerId}/hedges/{hedgeId}/cancel","href":"/api-reference/hedges/cancel-hedge"},{"group":"Drawdown Hedge","pages":[{"title":"Quote","playground":"simple","openapi":"POST /customers/{customerId}/hedges/{hedgeId}/drawdown/quote","href":"/api-reference/hedges/drawdown-quote"},{"title":"Accept","playground":"simple","openapi":"POST /customers/{customerId}/hedges/{hedgeId}/drawdown/accept","href":"/api-reference/hedges/drawdown-accept"},{"title":"List","playground":"simple","openapi":"GET /customers/{customerId}/hedges/{hedgeId}/drawdown","href":"/api-reference/hedges/list-drawdowns"},{"title":"Get","playground":"simple","openapi":"GET /customers/{customerId}/hedges/{hedgeId}/drawdown/{drawdownId}","href":"/api-reference/hedges/get-drawdown"}]}]},{"group":"Dual Hedges","pages":[{"title":"Rates","openapi":"GET /dual-hedge-offline-rates","href":"/api-reference/dual-hedges/get-offline-rates"},{"playground":"simple","title":"Accept","openapi":"POST /customers/{customerId}/dual-hedges/accept-offline-quote","href":"/api-reference/dual-hedges/accept-offline-quote"},{"title":"List Dual Hedges","openapi":"GET /customers/{customerId}/dual-hedges","href":"/api-reference/dual-hedges/list-dual-hedges"},{"title":"Get Dual Hedge","openapi":"GET /customers/{customerId}/dual-hedges/{dualHedgeId}","href":"/api-reference/dual-hedges/get-dual-hedge"},{"playground":"simple","title":"Cancel Dual Hedge","openapi":"POST /customers/{customerId}/dual-hedges/{dualHedgeId}/cancel","href":"/api-reference/dual-hedges/cancel-dual-hedge"}]},{"group":"Customers","pages":[{"playground":"simple","title":"Create Customer","openapi":"POST /customers","href":"/api-reference/customers/create-customer"},{"title":"List Customers","openapi":"GET /customers","href":"/api-reference/customers/list-customers"},{"title":"Get Customer","openapi":"GET /customers/{customerId}","href":"/api-reference/customers/get-customer"},{"playground":"simple","title":"Update Customer","openapi":"POST /customers/{customerId}/update","href":"/api-reference/customers/update-customer"},{"playground":"simple","title":"Delete Customer","openapi":"DELETE /customers/{customerId}","href":"/api-reference/customers/delete-customer"}]},{"group":"Conversions","pages":[{"playground":"simple","title":"Quote","openapi":"POST /conversions/quote","href":"/api-reference/conversions/get-quote"},{"playground":"simple","title":"Accept","openapi":"POST /conversions/accept-quote","href":"/api-reference/conversions/accept-quote"},{"title":"List Conversions","openapi":"GET /conversions","href":"/api-reference/conversions/list-conversions"},{"title":"Get Conversion","openapi":"GET /conversions/{conversionId}","href":"/api-reference/conversions/get-conversion"}]},{"group":"Payouts","pages":[{"title":"Review Payout","openapi":"POST /payouts","href":"/api-reference/payouts/review-payout"},{"title":"Submit Payout","openapi":"POST /payouts/{proposalId}/submit","href":"/api-reference/payouts/submit-payout"},{"title":"List Payouts","openapi":"GET /payouts","href":"/api-reference/payouts/list-payouts"},{"title":"Get Payout","openapi":"GET /payouts/{payoutId}","description":"Retrieves a single payout by its payout id, including its current status and vendor bank details.","href":"/api-reference/payouts/get-payout"}]},{"group":"Vendors","pages":[{"playground":"simple","title":"Create Vendor","openapi":"POST /vendors","href":"/api-reference/vendors/create-vendor"},{"title":"List Vendors","openapi":"GET /vendors","description":"Lists the partner's vendors, ordered by name, including their contact details and payout methods.","href":"/api-reference/vendors/list-vendors"},{"title":"Get Vendor","openapi":"GET /vendors/{vendorId}","href":"/api-reference/vendors/get-vendor"}]},{"group":"Wallets","pages":[{"title":"List Wallets","openapi":"GET /wallets","href":"/api-reference/wallets/list-wallets"},{"title":"Get Wallet","openapi":"GET /wallets/{walletId}","href":"/api-reference/wallets/get-wallet"},{"playground":"simple","title":"Withdraw","openapi":"POST /wallets/{walletId}/withdraw","href":"/api-reference/wallets/withdraw"}]},{"group":"Pricing","pages":[{"title":"Exchange Rate","openapi":"GET /rates/currency-pairs-exchange-rate","href":"/api-reference/pricing/get-exchange-rate"}]}]},{"tab":"Webhooks","pages":[{"title":"Webhooks","href":"/webhooks"}]}]},"basePath":"","title":"Create Vendor - Grain Developer Portal","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C-hEh3I2.js","utils-CnF4QiUD.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-C7PVNbel.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-8ytevL2A.js","snippetPresets-BT1alx3v.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BLXC0i_W.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CyLIGI9_.js","shallow-DC0lGVIW.js","getApiPlaygroundDisplay-CgDQ85tN.js","CodeSnippet-6-I-Gpv9.js","CodeSnippets-BAk1kDdu.js","Page-C945cI-W.js","getPastedJson-B276RuWN.js","icon-BqP8etTm.js","MethodPill-DM6sbxG1.js","DuplicateIcon-PyJglOaE.js","createIcon-CMeOMAc_.js","DynamicMarkdown-BoyYAA8K.js","SectionHeading-DAYv3gvZ.js","axios-vUo_bRtp.js","Markdown-BhTTmazV.js","clsx-CR-RHrVC.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CBUH0-zX.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BmARFYNC.js"]}