Before you can take money you need a store attached to a contractor. A contractor is the legal entity that actually gets paid: a company or an individual. Adyen has to know who is receiving the funds, which is why this exists.
GET /woocommerce/adyen/backoffice-user-contractors
Returns a list like:
"id": "3c55be36-0dae-4be8-8354-0ce07a8bb101",
"name": "My Company B.V.",
PUT /woocommerce/adyen/contractor
Body:
{ "contractorId": "3c55be36-0dae-4be8-8354-0ce07a8bb101" }
This call is mandatory if you want to access contractor related information. Skipping this step is the single most common cause of confusing errors.For example, listing stores (GET /woocommerce/adyen/stores) will either fail with an error if there is no connected contractor, or silently return the stores that belong to the wrong contractor, if your account has more than one and if another contractor was connected to this shop before.
POST /woocommerce/adyen/stores
You describe both the contractor and the store. If the contractor does not exist yet, it is created automatically during this call and connected to the shop.
Please note that you should not provide real company information on DEV environment.
"name": "My Company B.V.",
"owner": { "firstName": "John", "lastName": "Doe" },
"shopperStatement": "My Store NL",
"line1": "Keizersgracht 1",
A couple of the fields deserve a plain-language note:
shopperStatement is the short text that appears on the customer's bank or card statement. This value can't be changed for a store in future so please be attentive.industryCode is a standard category number for the kind of business (a "merchant category code"). You can fetch the valid list from GET /woocommerce/adyen/industry-codes.country code you can pick from GET /woocommerce/adyen/countries.
The response gives you a store id, for example ST32CSL223229G5NV6J3W4Z22. Write this down. It goes into the URL of most payment calls from here on.
You can list existing stores at any time with GET /woocommerce/adyen/stores — as long as the current contractor is set correctly first.
Before real payments can flow, the merchant has to pass Adyen's checks (proof of identity, business details, accepting terms). This is called onboarding, and it is often referred to as KYC ("Know Your Customer").
Check where things stand:
GET /woocommerce/adyen/onboarding-status
A response tells you the status and, if something is missing, exactly what:
"status": "verification-required",
"problem": "'organization.doingBusinessAs' was missing.",
"actions": ["Add 'organization.doingBusinessAs' to legal entity"]
"problem": "Terms Of Service forms are not accepted.",
"actions": ["Accept TOS"]
To let the merchant fix these, generate a link and send them to it:
POST /woocommerce/adyen/onboarding-links
Response:
{ "uri": "https://onboarding-example.com/check-page/..." }
Redirect the merchant to that uri. They fill in whatever Adyen needs. When they finish, Adyen returns them to your onboarding-redirect endpoint from Part 1c, which sends them back into your admin. Re-check the status until it comes back clear.