{"files":{"SKILL.md":"---\nname: adyen-payout-api\ndescription: \"Adyen Payout API skill. Use when working with Adyen Payout for confirmThirdParty, declineThirdParty, payout. Covers 6 endpoints.\"\nversion: 1.0.0\ngenerator: lapsh\n---\n\n# Adyen Payout API\nAPI version: 68\n\n## Auth\nApiKey X-API-Key in header | Bearer basic\n\n## Base URL\nhttps://pal-test.adyen.com/pal/servlet/Payout/v68\n\n## Setup\n1. Set Authorization header with Bearer token\n2. Verify API access with a test request\n3. POST /confirmThirdParty -- create first confirmThirdParty\n\n## Endpoints\n6 endpoints across 6 groups. See references/api-spec.lap for full details.\n\n### ConfirmThirdParty\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /confirmThirdParty | Confirm a payout |\n\n### DeclineThirdParty\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /declineThirdParty | Cancel a payout |\n\n### Payout\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /payout | Make an instant card payout |\n\n### StoreDetail\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /storeDetail | Store payout details |\n\n### StoreDetailAndSubmitThirdParty\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /storeDetailAndSubmitThirdParty | Store details and submit a payout |\n\n### SubmitThirdParty\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /submitThirdParty | Submit a payout |\n\n## Common Questions\nMatch user requests to endpoints in references/api-spec.lap. Key patterns:\n- \"Create a confirmThirdParty?\" -> POST /confirmThirdParty\n- \"Create a declineThirdParty?\" -> POST /declineThirdParty\n- \"Create a payout?\" -> POST /payout\n- \"Create a storeDetail?\" -> POST /storeDetail\n- \"Create a storeDetailAndSubmitThirdParty?\" -> POST /storeDetailAndSubmitThirdParty\n- \"Create a submitThirdParty?\" -> POST /submitThirdParty\n- \"How to authenticate?\" -> See Auth section above\n\n## Response Tips\n- Check response schemas in references/api-spec.lap for field details\n- Create/update endpoints return the modified resource on success\n- Error responses include status codes and descriptions in the spec\n\n## References\n- Full spec: See references/api-spec.lap for complete endpoint details, parameter tables, and response schemas\n\n> Generated from the official API spec by [LAP](https://lap.sh)\n","references/api-spec.lap":"@lap v0.3\n# Machine-readable API spec. Each @endpoint block is one API call.\n@api Adyen Payout API\n@base https://pal-test.adyen.com/pal/servlet/Payout/v68\n@version 68\n@auth ApiKey X-API-Key in header | Bearer basic\n@common_fields {merchantAccount: str # The merchant account identifier, with which you want to process the transaction.}\n@endpoints 6\n@toc confirmThirdParty(1), declineThirdParty(1), payout(1), storeDetail(1), storeDetailAndSubmitThirdParty(1), submitThirdParty(1)\n\n@group confirmThirdParty\n@endpoint POST /confirmThirdParty\n@desc Confirm a payout\n@required {originalReference: str # The PSP reference received in the `/submitThirdParty` response.}\n@optional {additionalData: map # This field contains additional data, which may be required for a particular payout request.}\n@returns(200) {additionalData: map, pspReference: str, response: str} # OK - the request has succeeded.\n@errors {400: Bad Request - a problem reading or understanding the request., 401: Unauthorized - authentication required., 403: Forbidden - insufficient permissions to process the request., 422: Unprocessable Entity - a request validation error., 500: Internal Server Error - the server could not process the request.}\n@example_request {\"merchantAccount\":\"YOUR_MERCHANT_ACCOUNT\",\"originalReference\":\"9913140798220028\"}\n\n@endgroup\n\n@group declineThirdParty\n@endpoint POST /declineThirdParty\n@desc Cancel a payout\n@required {originalReference: str # The PSP reference received in the `/submitThirdParty` response.}\n@optional {additionalData: map # This field contains additional data, which may be required for a particular payout request.}\n@returns(200) {additionalData: map, pspReference: str, response: str} # OK - the request has succeeded.\n@errors {400: Bad Request - a problem reading or understanding the request., 401: Unauthorized - authentication required., 403: Forbidden - insufficient permissions to process the request., 422: Unprocessable Entity - a request validation error., 500: Internal Server Error - the server could not process the request.}\n@example_request {\"merchantAccount\":\"YOUR_MERCHANT_ACCOUNT\",\"originalReference\":\"9913140798220028\"}\n\n@endgroup\n\n@group payout\n@endpoint POST /payout\n@desc Make an instant card payout\n@required {amount: map{currency!: str, value!: int(int64)}, reference: str # The reference to uniquely identify a payment. This reference is used in all communication with you about the payment status. We recommend using a unique value per payment; however, it is not a requirement. If you need to provide multiple references for a transaction, separate them with hyphens (\"-\"). Maximum length: 80 characters.}\n@optional {billingAddress: map{city!: str, country!: str, houseNumberOrName!: str, postalCode!: str, stateOrProvince: str, street!: str}, card: map{cvc: str, expiryMonth: str, expiryYear: str, holderName: str, issueNumber: str, number: str, startMonth: str, startYear: str}, fraudOffset: int(int32) # An integer value that is added to the normal fraud score. The value can be either positive or negative., fundSource: map{additionalData: map, billingAddress: map, card: map, shopperEmail: str, shopperName: map, telephoneNumber: str}, recurring: map{contract: str, recurringDetailName: str, recurringExpiry: str(date-time), recurringFrequency: str, tokenService: str}, selectedRecurringDetailReference: str # The `recurringDetailReference` you want to use for this payment. The value `LATEST` can be used to select the most recently stored recurring detail., shopperEmail: str # The shopper's email address. We recommend that you provide this data, as it is used in velocity fraud checks. > Required for Visa and JCB transactions that require 3D Secure 2 authentication if you did not include the `telephoneNumber`., shopperInteraction: str(Ecommerce/ContAuth/Moto/POS) # Specifies the sales channel, through which the shopper gives their card details, and whether the shopper is a returning customer. For the web service API, Adyen assumes Ecommerce shopper interaction by default.  This field has the following possible values: * `Ecommerce` - Online transactions where the cardholder is present (online). For better authorisation rates, we recommend sending the card security code (CSC) along with the request. * `ContAuth` - Card on file and/or subscription transactions, where the cardholder is known to the merchant (returning customer). If the shopper is present (online), you can supply also the CSC to improve authorisation (one-click payment). * `Moto` - Mail-order and telephone-order transactions where the shopper is in contact with the merchant via email or telephone. * `POS` - Point-of-sale transactions where the shopper is physically present to make a payment using a secure payment terminal., shopperName: map{firstName!: str, lastName!: str}, shopperReference: str # Required for recurring payments.  Your reference to uniquely identify this shopper, for example user ID or account ID. The value is case-sensitive and must be at least three characters. > Your reference must not include personally identifiable information (PII) such as name or email address., telephoneNumber: str # The shopper's telephone number.  The phone number must include a plus sign (+) and a country code (1-3 digits), followed by the number (4-15 digits). If the value you provide does not follow the guidelines, we do not submit it for authentication. > Required for Visa and JCB transactions that require 3D Secure 2 authentication, if you did not include the `shopperEmail`.}\n@returns(200) {additionalData: map, authCode: str, dccAmount: map{currency: str, value: int(int64)}, dccSignature: str, fraudResult: map{accountScore: int(int32), results: [any]}, issuerUrl: str, md: str, paRequest: str, pspReference: str, refusalReason: str, resultCode: str} # OK - the request has succeeded.\n@errors {400: Bad Request - a problem reading or understanding the request., 401: Unauthorized - authentication required., 403: Forbidden - insufficient permissions to process the request., 422: Unprocessable Entity - a request validation error., 500: Internal Server Error - the server could not process the request.}\n@example_request {\"amount\":{\"value\":2500,\"currency\":\"USD\"},\"card\":{\"number\":\"4111111111111111\",\"expiryMonth\":\"03\",\"expiryYear\":\"2030\",\"holderName\":\"John Smith\"},\"billingAddress\":{\"houseNumberOrName\":\"121\",\"street\":\"Brannan Street\",\"city\":\"Beverly Hills\",\"postalCode\":\"90210\",\"stateOrProvince\":\"CA\",\"country\":\"US\"},\"merchantAccount\":\"YOUR_MERCHANT_ACCOUNT\",\"reference\":\"P9999999999999999\",\"shopperName\":{\"firstName\":\"John\",\"lastName\":\"Smith\"}}\n\n@endgroup\n\n@group storeDetail\n@endpoint POST /storeDetail\n@desc Store payout details\n@required {dateOfBirth: str(date) # The date of birth. Format: [ISO-8601](https://www.w3.org/TR/NOTE-datetime); example: YYYY-MM-DD For Paysafecard it must be the same as used when registering the Paysafecard account. > This field is mandatory for natural persons., entityType: str(NaturalPerson/Company) # The type of the entity the payout is processed for., nationality: str # The shopper's nationality.  A valid value is an ISO 2-character country code (e.g. 'NL')., recurring: map{contract: str, recurringDetailName: str, recurringExpiry: str(date-time), recurringFrequency: str, tokenService: str}, shopperEmail: str # The shopper's email address., shopperReference: str # The shopper's reference for the payment transaction.}\n@optional {additionalData: map # This field contains additional data, which may be required for a particular request., bank: map{bankAccountNumber: str, bankCity: str, bankLocationId: str, bankName: str, bic: str, countryCode: str, iban: str, ownerName: str, taxId: str}, billingAddress: map{city!: str, country!: str, houseNumberOrName!: str, postalCode!: str, stateOrProvince: str, street!: str}, card: map{cvc: str, expiryMonth: str, expiryYear: str, holderName: str, issueNumber: str, number: str, startMonth: str, startYear: str}, fraudOffset: int(int32) # An integer value that is added to the normal fraud score. The value can be either positive or negative., selectedBrand: str # The name of the brand to make a payout to.  For Paysafecard it must be set to `paysafecard`., shopperName: map{firstName!: str, lastName!: str}, socialSecurityNumber: str # The shopper's social security number., telephoneNumber: str # The shopper's phone number.}\n@returns(200) {additionalData: map, pspReference: str, recurringDetailReference: str, resultCode: str} # OK - the request has succeeded.\n@errors {400: Bad Request - a problem reading or understanding the request., 401: Unauthorized - authentication required., 403: Forbidden - insufficient permissions to process the request., 422: Unprocessable Entity - a request validation error., 500: Internal Server Error - the server could not process the request.}\n@example_request {\"merchantAccount\":\"YOUR_MERCHANT_ACCOUNT\",\"recurring\":{\"contract\":\"PAYOUT\"},\"bank\":{\"bankName\":\"AbnAmro\",\"bic\":\"ABNANL2A\",\"countryCode\":\"NL\",\"iban\":\"NL32ABNA0515071439\",\"ownerName\":\"Adyen\",\"bankCity\":\"Amsterdam\",\"taxId\":\"bankTaxId\"},\"shopperEmail\":\"shopper@email.com\",\"shopperReference\":\"YOUR_UNIQUE_SHOPPER_ID\",\"shopperName\":{\"firstName\":\"Adyen\",\"lastName\":\"Test\"},\"dateOfBirth\":\"1990-01-01\",\"entityType\":\"Company\",\"nationality\":\"NL\",\"billingAddress\":{\"houseNumberOrName\":\"17\",\"street\":\"Teststreet 1\",\"city\":\"Amsterdam\",\"stateOrProvince\":\"NY\",\"country\":\"US\",\"postalCode\":\"12345\"}}\n\n@endgroup\n\n@group storeDetailAndSubmitThirdParty\n@endpoint POST /storeDetailAndSubmitThirdParty\n@desc Store details and submit a payout\n@required {amount: map{currency!: str, value!: int(int64)}, dateOfBirth: str(date) # The date of birth. Format: [ISO-8601](https://www.w3.org/TR/NOTE-datetime); example: YYYY-MM-DD For Paysafecard it must be the same as used when registering the Paysafecard account. > This field is mandatory for natural persons., entityType: str(NaturalPerson/Company) # The type of the entity the payout is processed for., nationality: str # The shopper's nationality.  A valid value is an ISO 2-character country code (e.g. 'NL')., recurring: map{contract: str, recurringDetailName: str, recurringExpiry: str(date-time), recurringFrequency: str, tokenService: str}, reference: str # The merchant reference for this payment. This reference will be used in all communication to the merchant about the status of the payout. Although it is a good idea to make sure it is unique, this is not a requirement., shopperEmail: str # The shopper's email address., shopperReference: str # The shopper's reference for the payment transaction.}\n@optional {additionalData: map # This field contains additional data, which may be required for a particular request., bank: map{bankAccountNumber: str, bankCity: str, bankLocationId: str, bankName: str, bic: str, countryCode: str, iban: str, ownerName: str, taxId: str}, billingAddress: map{city!: str, country!: str, houseNumberOrName!: str, postalCode!: str, stateOrProvince: str, street!: str}, card: map{cvc: str, expiryMonth: str, expiryYear: str, holderName: str, issueNumber: str, number: str, startMonth: str, startYear: str}, fraudOffset: int(int32) # An integer value that is added to the normal fraud score. The value can be either positive or negative., selectedBrand: str # The name of the brand to make a payout to.  For Paysafecard it must be set to `paysafecard`., shopperName: map{firstName!: str, lastName!: str}, shopperStatement: str # The description of this payout. This description is shown on the bank statement of the shopper (if this is supported by the chosen payment method)., socialSecurityNumber: str # The shopper's social security number., telephoneNumber: str # The shopper's phone number.}\n@returns(200) {additionalData: map, pspReference: str, refusalReason: str, resultCode: str} # OK - the request has succeeded.\n@errors {400: Bad Request - a problem reading or understanding the request., 401: Unauthorized - authentication required., 403: Forbidden - insufficient permissions to process the request., 422: Unprocessable Entity - a request validation error., 500: Internal Server Error - the server could not process the request.}\n@example_request {\"merchantAccount\":\"YOUR_MERCHANT_ACCOUNT\",\"recurring\":{\"contract\":\"PAYOUT\"},\"amount\":{\"value\":2000,\"currency\":\"EUR\"},\"bank\":{\"bankName\":\"Commerzbank\",\"iban\":\"DE87123456781234567890\",\"countryCode\":\"DE\",\"ownerName\":\"Simon Hopper\"},\"reference\":\"Your Reference\",\"shopperEmail\":\"s.hopper@test.com\",\"shopperReference\":\"YOUR_SHOPPER_REFERENCE\",\"shopperName\":{\"firstName\":\"Adyen\",\"lastName\":\"Test\"},\"dateOfBirth\":\"1990-01-01\",\"entityType\":\"Company\",\"nationality\":\"NL\"}\n\n@endgroup\n\n@group submitThirdParty\n@endpoint POST /submitThirdParty\n@desc Submit a payout\n@required {amount: map{currency!: str, value!: int(int64)}, recurring: map{contract: str, recurringDetailName: str, recurringExpiry: str(date-time), recurringFrequency: str, tokenService: str}, reference: str # The merchant reference for this payout. This reference will be used in all communication to the merchant about the status of the payout. Although it is a good idea to make sure it is unique, this is not a requirement., selectedRecurringDetailReference: str # This is the `recurringDetailReference` you want to use for this payout.  You can use the value LATEST to select the most recently used recurring detail., shopperEmail: str # The shopper's email address., shopperReference: str # The shopper's reference for the payout transaction.}\n@optional {additionalData: map # This field contains additional data, which may be required for a particular request., dateOfBirth: str(date) # The date of birth. Format: ISO-8601; example: YYYY-MM-DD  For Paysafecard it must be the same as used when registering the Paysafecard account.  > This field is mandatory for natural persons.  > This field is required to update the existing `dateOfBirth` that is associated with this recurring contract., entityType: str(NaturalPerson/Company) # The type of the entity the payout is processed for.  Allowed values: * NaturalPerson * Company > This field is required to update the existing `entityType` that is associated with this recurring contract., fraudOffset: int(int32) # An integer value that is added to the normal fraud score. The value can be either positive or negative., nationality: str # The shopper's nationality.  A valid value is an ISO 2-character country code (e.g. 'NL').  > This field is required to update the existing nationality that is associated with this recurring contract., shopperName: map{firstName!: str, lastName!: str}, shopperStatement: str # The description of this payout. This description is shown on the bank statement of the shopper (if this is supported by the chosen payment method)., socialSecurityNumber: str # The shopper's social security number.}\n@returns(200) {additionalData: map, pspReference: str, refusalReason: str, resultCode: str} # OK - the request has succeeded.\n@errors {400: Bad Request - a problem reading or understanding the request., 401: Unauthorized - authentication required., 403: Forbidden - insufficient permissions to process the request., 422: Unprocessable Entity - a request validation error., 500: Internal Server Error - the server could not process the request.}\n@example_request {\"amount\":{\"currency\":\"EUR\",\"value\":1000},\"merchantAccount\":\"YOUR_MERCHANT_ACCOUNT\",\"recurring\":{\"contract\":\"PAYOUT\"},\"reference\":\"PayoutPayment-0001\",\"shopperEmail\":\"shopper@email.com\",\"shopperReference\":\"YOUR_UNIQUE_SHOPPER_ID\",\"shopperName\":{\"firstName\":\"Adyen\",\"lastName\":\"Test\"},\"dateOfBirth\":\"1990-01-01\",\"entityType\":\"Company\",\"nationality\":\"NL\",\"selectedRecurringDetailReference\":\"LATEST\"}\n\n@endgroup\n\n@end\n"}}