"Fund API skill. Use when working with Fund for accountHolderBalance, accountHolderTransactionList, debitAccountHolder. Covers 8 endpoints."
Resources
1Install
npx skillscat add lap-platform/claude-marketplace/fund-api Install via the SkillsCat registry.
SKILL.md
Fund API
API version: 6
Auth
ApiKey X-API-Key in header | Bearer basic
Base URL
https://cal-test.adyen.com/cal/services/Fund/v6
Setup
- Set Authorization header with your Bearer token
- POST /accountHolderBalance -- create first accountHolderBalance
Endpoints
8 endpoints across 8 groups. See references/api-spec.lap for full details.
accountHolderBalance
| Method | Path | Description |
|---|---|---|
| POST | /accountHolderBalance | Get the balances of an account holder |
accountHolderTransactionList
| Method | Path | Description |
|---|---|---|
| POST | /accountHolderTransactionList | Get a list of transactions |
debitAccountHolder
| Method | Path | Description |
|---|---|---|
| POST | /debitAccountHolder | Send a direct debit request |
payoutAccountHolder
| Method | Path | Description |
|---|---|---|
| POST | /payoutAccountHolder | Pay out from an account to the account holder |
refundFundsTransfer
| Method | Path | Description |
|---|---|---|
| POST | /refundFundsTransfer | Refund a funds transfer |
refundNotPaidOutTransfers
| Method | Path | Description |
|---|---|---|
| POST | /refundNotPaidOutTransfers | Refund all transactions of an account since the most recent payout |
setupBeneficiary
| Method | Path | Description |
|---|---|---|
| POST | /setupBeneficiary | Designate a beneficiary account and transfer the benefactor's current balance |
transferFunds
| Method | Path | Description |
|---|---|---|
| POST | /transferFunds | Transfer funds between platform accounts |
Enhanced Skill Content
Question Mapping
- "What is the balance for an account holder?" -> POST /accountHolderBalance
- "How much money is pending or on hold for this account?" -> POST /accountHolderBalance
- "Show me the transactions for an account holder" -> POST /accountHolderTransactionList
- "List transactions filtered by status for a specific account" -> POST /accountHolderTransactionList
- "How do I debit funds from an account holder's bank account?" -> POST /debitAccountHolder
- "Pay out funds to an account holder's bank account" -> POST /payoutAccountHolder
- "Can I send an instant payout to an account holder?" -> POST /payoutAccountHolder (payoutSpeed=INSTANT)
- "How do I reverse a funds transfer?" -> POST /refundFundsTransfer
- "Refund all transfers that haven't been paid out yet" -> POST /refundNotPaidOutTransfers
- "How do I set up a beneficiary relationship between two accounts?" -> POST /setupBeneficiary
- "Transfer funds between two accounts on the platform" -> POST /transferFunds
- "How do I split a debit across multiple accounts?" -> POST /debitAccountHolder (using splits array)
- "What page of transactions should I request next?" -> POST /accountHolderTransactionList (page parameter in transactionListsPerAccount)
- "How do I track a payout I initiated?" -> POST /payoutAccountHolder (check merchantReference and pspReference in response)
Response Tips
- Balances (
accountHolderBalance): ChecktotalBalancefor aggregate view across sub-fieldsbalance,onHoldBalance, andpendingBalance-- each is an array of currency-amount maps. Per-account breakdown is inbalancePerAccount. - Transactions (
accountHolderTransactionList): Results are nested insideaccountTransactionLists, grouped per account. Usepagein the request to paginate; there is no cursor or next-page token, so increment page until the list returns empty. - Debits and Payouts (
debitAccountHolder,payoutAccountHolder): Both 200 and 202 share the same schema -- a 202 means the request is accepted but processing asynchronously. Always store thepspReferencefor reconciliation. - Refunds (
refundFundsTransfer,refundNotPaidOutTransfers): Themessagefield on refundFundsTransfer provides human-readable status detail; refundNotPaidOutTransfers has no message field. - All endpoints:
invalidFieldsis always present in responses -- a non-empty array indicates partial validation issues even on a 200/202.resultCodeconfirms the outcome.
Anomaly Flags
invalidFieldsis non-empty on a 200/202: The request succeeded but some fields were ignored or flagged -- surface these to the user immediately as they may indicate silent data issues.- 202 instead of 200: The operation is queued, not completed. Flag this so the user knows to poll or await a webhook for confirmation.
resultCodeis not "Success": Even on a 200, the result code may indicate a business-level rejection. Always check and surface unexpected values.- 422 Unprocessable Entity: Indicates the request was syntactically valid but semantically wrong (e.g., insufficient funds, invalid account code). Surface the response body for actionable detail.
- Amount value of 0 or negative in requests: The API uses
int64for amounts -- flag if a user constructs a zero or negative debit/transfer/payout as this is almost certainly an error. - Missing
pspReferencein response: Every successful response should include one. Its absence suggests a malformed or intercepted response. payoutSpeedset to INSTANT: Flag that instant payouts may incur additional fees or have different availability depending on the payment method.
Playbook
1. Check Balance and Pay Out Available Funds
- Call
POST /accountHolderBalancewith theaccountHolderCodeto retrieve current balances. - Inspect
totalBalance.balancefor available funds andtotalBalance.onHoldBalancefor held amounts. - Determine the payout amount (available minus on-hold minus any desired reserve).
- Call
POST /payoutAccountHolderwithaccountCode,accountHolderCode, the calculatedamount, and optionallybankAccountUUIDandpayoutSpeed. - Store the returned
pspReferenceandmerchantReferencefor tracking.
2. Transfer Funds Between Platform Accounts
- Call
POST /setupBeneficiarywithsourceAccountCodeanddestinationAccountCodeto establish the transfer relationship (one-time setup). - Confirm
resultCodeis "Success" andinvalidFieldsis empty. - Call
POST /transferFundswithsourceAccountCode,destinationAccountCode,amount, and a uniquetransferCode. - Record the
pspReferencefor reconciliation.
3. Refund a Failed or Disputed Transfer
- Locate the
pspReferenceof the original transfer from your records. - Call
POST /refundFundsTransferwith theoriginalReferenceset to thatpspReferenceand theamountto refund. - Check the
resultCodeandmessagein the response for confirmation. - If the response is 202, monitor asynchronously for completion.
4. Audit Account Holder Transactions
- Call
POST /accountHolderTransactionListwith theaccountHolderCode. - Optionally filter by
transactionStatuses(e.g., only completed or pending). - To paginate, include
transactionListsPerAccountwith the specificaccountCodeandpagenumber starting at 1. - Increment
pageand repeat until the returned transaction list is empty. - Cross-reference totals against
POST /accountHolderBalanceto verify consistency.
5. Debit an Account Holder with Split Payments
- Call
POST /debitAccountHolderwithaccountHolderCode,amount,bankAccountUUID, andmerchantAccount. - Populate the
splitsarray to distribute the debit across multiple accounts (e.g., platform fee split, marketplace commission). - Each split requires a
type(e.g., "MarketPlace", "Commission") and optionally anaccount,amount, anddescription. - Verify
resultCodeis "Success" and checkinvalidFieldsfor any rejected split entries. - Store
pspReferenceandmerchantReferencesfor reconciliation across all split destinations.
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