"Adyen Recurring API skill. Use when working with Adyen Recurring for createPermit, disable, disablePermit. Covers 6 endpoints."
Resources
1Install
npx skillscat add lap-platform/claude-marketplace/adyen-recurring-api Install via the SkillsCat registry.
SKILL.md
Adyen Recurring API
API version: 68
Auth
ApiKey X-API-Key in header | Bearer basic
Base URL
https://paltokenization-test.adyen.com/paltokenization/servlet/Recurring/v68
Setup
- Set Authorization header with your Bearer token
- POST /createPermit -- create first createPermit
Endpoints
6 endpoints across 6 groups. See references/api-spec.lap for full details.
createPermit
| Method | Path | Description |
|---|---|---|
| POST | /createPermit | Create new permits linked to a recurring contract. |
disable
| Method | Path | Description |
|---|---|---|
| POST | /disable | Disable stored payment details |
disablePermit
| Method | Path | Description |
|---|---|---|
| POST | /disablePermit | Disable an existing permit. |
listRecurringDetails
| Method | Path | Description |
|---|---|---|
| POST | /listRecurringDetails | Get stored payment details |
notifyShopper
| Method | Path | Description |
|---|---|---|
| POST | /notifyShopper | Ask issuer to notify the shopper |
scheduleAccountUpdater
| Method | Path | Description |
|---|---|---|
| POST | /scheduleAccountUpdater | Schedule running the Account Updater |
Enhanced Skill Content
Question Mapping
- "How do I list all saved payment methods for a shopper?" -> POST /listRecurringDetails
- "How do I delete a stored payment method?" -> POST /disable
- "How do I disable all recurring details for a shopper?" -> POST /disable (omit recurringDetailReference)
- "How do I create a permit for a recurring payment?" -> POST /createPermit
- "How do I revoke a specific permit?" -> POST /disablePermit
- "How do I notify a shopper about an upcoming recurring charge?" -> POST /notifyShopper
- "How do I update expired card details automatically?" -> POST /scheduleAccountUpdater
- "How do I check what contract types a shopper has?" -> POST /listRecurringDetails (inspect recurring.contract in response)
- "How do I disable a specific recurring detail by reference?" -> POST /disable (include recurringDetailReference)
- "How do I set up a permit with date restrictions?" -> POST /createPermit (use restriction and validTillDate in permits)
- "How do I find the last known email for a shopper?" -> POST /listRecurringDetails (read lastKnownShopperEmail from response)
- "How do I send a billing notification with a custom display reference?" -> POST /notifyShopper (set displayedReference)
- "How do I schedule a card update with full card details instead of a stored reference?" -> POST /scheduleAccountUpdater (pass card object instead of selectedRecurringDetailReference)
Response Tips
- Listing (listRecurringDetails): Response
detailsis an array of mixed-type objects; each entry's shape varies by payment method type (card, SEPA, etc.). Always checkcreationDatefor staleness. - Disable/DisablePermit:
disablereturns a simple{response: str}where"[detail-successfully-disabled]"is the success value.disablePermitreturns astatusfield instead. - Permits (createPermit):
permitResultListis an array of maps -- iterate it to check individual permit outcomes even if pspReference indicates overall acceptance. - Notifications (notifyShopper): Check
resultCodefor success/failure;shopperNotificationReferenceis your correlation ID for tracking notification delivery. - Account Updater (scheduleAccountUpdater):
resultindicates scheduling status, not the update outcome itself -- actual card updates arrive asynchronously via webhooks. - Errors (all endpoints): 422 indicates validation failure with detailed field-level messages. 401/403 distinguish between missing credentials and insufficient permissions.
Anomaly Flags
- 422 validation errors on disable: May indicate the recurringDetailReference is already disabled or does not exist -- surface this explicitly rather than retrying.
- Empty
detailsarray from listRecurringDetails: Shopper may have no stored methods or the contract filter may be too restrictive -- flag if the shopper was expected to have saved methods. resultCodeother than success on notifyShopper: Surface immediately; failed notifications may mean the shopper won't be aware of an upcoming charge, creating compliance risk.resultvalue on scheduleAccountUpdater: If not a clear success indicator, flag that the card update was not scheduled and manual intervention may be needed.- 401/403 on any endpoint: API key may be expired or lack the required recurring role -- surface with a recommendation to check Adyen Customer Area permissions.
- Permit
validTillDatein the past: If creating permits with expired dates, flag before sending the request to avoid a guaranteed 422. - Missing
merchantAccountin any request: Common field required by all endpoints -- surface early since every call will fail without it.
Playbook
1. Remove a Specific Saved Payment Method
- Call
POST /listRecurringDetailswithshopperReferenceto retrieve all stored methods - Identify the target entry in the
detailsarray and note itsrecurringDetailReference - Call
POST /disablewithshopperReferenceand therecurringDetailReference - Confirm the response contains
"[detail-successfully-disabled]"
2. Set Up a Recurring Permit with Restrictions
- Call
POST /listRecurringDetailswithshopperReferenceto get therecurringDetailReferencefor the stored payment method - Call
POST /createPermitwith therecurringDetailReference,shopperReference, and apermitsarray specifyingrestriction,validTillDate, andpartnerId - Check
permitResultListto confirm each permit was created successfully - Store the returned
pspReferencefor future reference or revocation
3. Notify Shopper Before a Recurring Charge
- Call
POST /listRecurringDetailsto verify the shopper still has an active stored payment method - Call
POST /notifyShopperwithshopperReference,amount(currency + value in minor units), andreference - Optionally set
billingDateanddisplayedReferencefor clearer shopper communication - Check
resultCodein the response to confirm the notification was accepted - Log
shopperNotificationReferencefor tracking and compliance auditing
4. Refresh Expired Card Details via Account Updater
- Call
POST /listRecurringDetailsto find stored cards with upcoming or past expiry dates - For each expired card, call
POST /scheduleAccountUpdaterwith eitherselectedRecurringDetailReference(preferred) or fullcarddetails - Check the
resultfield to confirm the update was scheduled - Monitor Adyen webhooks for the actual card update result (new expiry, new number, or card closed)
5. Fully Remove a Shopper's Recurring Profile
- Call
POST /listRecurringDetailswithshopperReferenceto enumerate all stored methods - For each entry in
details, callPOST /disablewith the correspondingrecurringDetailReference - Alternatively, call
POST /disablewith onlyshopperReference(norecurringDetailReference) to disable all at once - If any permits exist, call
POST /disablePermitwith each permittoken - Verify by calling
POST /listRecurringDetailsagain --detailsshould be empty
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