"Adyen Payout API skill. Use when working with Adyen Payout for confirmThirdParty, declineThirdParty, payout. Covers 6 endpoints."
Resources
1Install
npx skillscat add lap-platform/claude-marketplace/adyen-payout-api Install via the SkillsCat registry.
SKILL.md
Adyen Payout API
API version: 68
Auth
ApiKey X-API-Key in header | Bearer basic
Base URL
https://pal-test.adyen.com/pal/servlet/Payout/v68
Setup
- Set Authorization header with your Bearer token
- POST /confirmThirdParty -- create first confirmThirdParty
Endpoints
6 endpoints across 6 groups. See references/api-spec.lap for full details.
confirmThirdParty
| Method | Path | Description |
|---|---|---|
| POST | /confirmThirdParty | Confirm a payout |
declineThirdParty
| Method | Path | Description |
|---|---|---|
| POST | /declineThirdParty | Cancel a payout |
payout
| Method | Path | Description |
|---|---|---|
| POST | /payout | Make an instant card payout |
storeDetail
| Method | Path | Description |
|---|---|---|
| POST | /storeDetail | Store payout details |
storeDetailAndSubmitThirdParty
| Method | Path | Description |
|---|---|---|
| POST | /storeDetailAndSubmitThirdParty | Store details and submit a payout |
submitThirdParty
| Method | Path | Description |
|---|---|---|
| POST | /submitThirdParty | Submit a payout |
Enhanced Skill Content
Question Mapping
- "How do I send a payout to a card?" -> POST /payout
- "How do I confirm a third-party payout?" -> POST /confirmThirdParty
- "How do I decline or cancel a pending third-party payout?" -> POST /declineThirdParty
- "How do I store a shopper's bank account or card for future payouts?" -> POST /storeDetail
- "How do I store payment details and submit a third-party payout in one call?" -> POST /storeDetailAndSubmitThirdParty
- "How do I submit a payout using previously stored details?" -> POST /submitThirdParty
- "How do I pay out to a bank account (IBAN) instead of a card?" -> POST /storeDetailAndSubmitThirdParty (provide
bankwithiban/ownerName) - "How do I set up recurring payouts for a shopper?" -> POST /storeDetail (with
recurring.contractset), then POST /submitThirdParty - "How do I check if a payout was refused?" -> Inspect
resultCodeandrefusalReasonin the response from POST /payout, /storeDetailAndSubmitThirdParty, or /submitThirdParty - "How do I pay out to a person vs. a company?" -> POST /storeDetail or /storeDetailAndSubmitThirdParty with
entityTypeset toNaturalPersonorCompany - "How do I reference a previous payout to confirm or decline it?" -> POST /confirmThirdParty or /declineThirdParty with
originalReferenceset to thepspReferencefrom the original submission - "How do I send a payout with fraud scoring?" -> POST /payout with
fraudOffsetand/orfundSourcefields populated - "What shopper details do I need to store payment info?" -> POST /storeDetail requires
dateOfBirth,entityType,nationality,shopperEmail,shopperReference, andrecurring
Response Tips
- confirmThirdParty / declineThirdParty: Check
responsefield for[confirm-received]or[decline-received];pspReferenceis the confirmation's own reference, not the original payout's. - payout:
resultCodeindicates outcome (Authorised, Refused, Error); if refused,refusalReasonexplains why.dccAmountonly appears for cross-currency payouts.fraudResult.accountScoreis cumulative risk; inspectresultsarray for individual rule triggers. - storeDetail:
recurringDetailReferenceis the token you need for future /submitThirdParty calls; persist it alongsideshopperReference. - storeDetailAndSubmitThirdParty / submitThirdParty:
resultCodeof[payout-submit-received]means queued, not completed; final status arrives via webhook notification. A non-emptyrefusalReasonwith a received result still means the submission was accepted for processing. - All endpoints:
additionalDatais a freeform key-value map that varies by payment method and configuration; do not rely on fixed keys without checking your Adyen account setup. HTTP 422 typically indicates validation failure with a descriptive error body.
Anomaly Flags
- Refused payouts: Surface immediately when
resultCodeisRefused-- includerefusalReasonandpspReferencefor investigation. - HTTP 422 responses: Validation errors often indicate malformed amounts, missing required nested fields (e.g.,
currencywithoutvalue), or invalid enum values forentityType/shopperInteraction-- surface the full error body. - Missing recurringDetailReference: If
/storeDetailreturns successfully butrecurringDetailReferenceis empty or absent, flag it -- subsequent/submitThirdPartycalls will fail. - Fraud score spikes: When
fraudResult.accountScoreexceeds your configured threshold orfraudResult.resultscontains triggered rules, surface the score and rule names. - Unexpected resultCode values: Flag any
resultCodethat is notAuthorised,[payout-submit-received], orRefused-- these may indicate integration issues or new Adyen-side states. - HTTP 401/403 errors: Authentication or permission failures -- flag that the API key may be invalid, expired, or lacking payout permissions for the merchant account.
- Cross-currency payouts: When
dccAmountappears in/payoutresponses, surface the currency conversion details so the user can verify the exchange rate.
Playbook
1. Direct Card Payout (Instant)
- Call
POST /payoutwithamount(currency + value in minor units),reference,merchantAccount, andcarddetails. - Check
resultCodein the response --Authorisedmeans funds are being sent. - If
Refused, readrefusalReasonand adjust the request (e.g., check card number, amount limits). - Store
pspReferencefor reconciliation and dispute tracking.
2. Third-Party Payout with Stored Details (Two-Step)
- Call
POST /storeDetailwith shopper info (dateOfBirth,entityType,nationality,shopperEmail,shopperReference),recurringcontract, and eitherbank(IBAN details) orcarddetails. - Save the returned
recurringDetailReference. - Call
POST /submitThirdPartywithamount,reference,shopperEmail,shopperReference,selectedRecurringDetailReference(from step 2), and the samerecurringblock. - Confirm
resultCodeis[payout-submit-received]-- the payout is now queued. - Await webhook notification for final settlement status.
3. Store and Submit in One Call
- Call
POST /storeDetailAndSubmitThirdPartywith all required fields:amount,reference,dateOfBirth,entityType,nationality,shopperEmail,shopperReference,recurring, plusbankorcarddetails. - Check
resultCodefor[payout-submit-received]. - If
refusalReasonis present but result is still received, the payout is queued -- monitor via webhooks. - Store
pspReferencefor tracking.
4. Confirm or Decline a Pending Third-Party Payout
- After submitting a third-party payout, retrieve the
pspReferencefrom the submission response. - To approve: call
POST /confirmThirdPartywithoriginalReferenceset to thatpspReference. - To reject: call
POST /declineThirdPartywithoriginalReferenceset to thatpspReference. - Verify the
responsefield contains[confirm-received]or[decline-received]respectively.
5. Recurring Payout Setup and Execution
- Call
POST /storeDetailwithrecurring.contractset toPAYOUT, shopper identity fields, and payment method details. - Save
recurringDetailReferencefrom the response. - For each scheduled payout, call
POST /submitThirdPartywith the storedselectedRecurringDetailReference, a uniquereference, and the payoutamount. - Monitor
resultCodeandrefusalReasonon each submission. - If a payout is refused repeatedly, call
POST /storeDetailagain to update payment details and obtain a newrecurringDetailReference.
Response Tips
- Check response schemas in references/api-spec.lap for field details
- Create/update endpoints typically return the created/updated object
References
- Full spec: See references/api-spec.lap for complete endpoint details, parameter tables, and response schemas
Generated from the official API spec by LAP