mcpField
P
paystack-transfer-recipients

paystack-transfer-recipients

github.com/rexedgeOther137 installsUpdated 33w ago
Repository

About paystack-transfer-recipients

paystack-transfer-recipients is a skill for managing Paystack transfer recipients, intended for developers integrating the Paystack API. It supports several bank-account and mobile-money types, including bulk creation.

Key features

  1. 01Create recipients individually or in bulk
  2. 02List and fetch recipients
  3. 03Update recipient details
  4. 04Deactivate recipients
  5. 05Support multiple account and wallet types

Use cases

  1. 01Register beneficiaries for bank transfers
  2. 02Bulk import transfer recipients
  3. 03Look up or update existing recipients
  4. 04Deactivate recipients that are no longer used

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/rexedge/paystack --skill paystack-transfer-recipients

After installing, type/paystack-transfer-recipientsin Claude Code to confirm it loaded.

Details

From the project README

Paystack Transfer Recipients

The Transfer Recipients API lets you create and manage beneficiaries that receive money via transfers. You must create a recipient before initiating a transfer.

Depends on: paystack-setup for the paystackRequest helper.
Related: paystack-transfers for sending money to recipients.

Endpoints

MethodEndpointDescription
POST/transferrecipientCreate a recipient
POST/transferrecipient/bulkBulk create recipients
GET/transferrecipientList recipients
GET/transferrecipient/:id_or_codeFetch a recipient
PUT/transferrecipient/:id_or_codeUpdate a recipient
DELETE/transferrecipient/:id_or_codeDelete (deactivate) a recipient

Recipient Types

TypeDescriptionCountries
nubanNigerian bank accounts (NUBAN)Nigeria
ghipssGhana Interbank Payment & SettlementGhana
mobile_moneyMobile money walletsGhana, Kenya
basaSouth African bank accountsSouth Africa
authorizationUse a previous charge authorizationAll

Create Transfer Recipient

POST /transferrecipient

A duplicate account number returns the existing record instead of creating a new one.

ParamTypeRequiredDescription
typestringYesnuban, ghipss, mobile_money, or basa
namestringYesRecipient name (as registered on their account)
account_numberstringYes*Bank account / mobile number (* Not required for authorization type)
bank_codestringYes*Bank code from List Banks endpoint (* Not required for authorization type)
descriptionstringNoDescription for this recipient
currencystringNoCurrency code (e.g. NGN, GHS, ZAR)
authorization_codestringNoAuth code from a previous transaction
metadataobjectNoAdditional structured data
Nigerian Bank Account (NUBAN)
const recipient = await paystackRequest<{
  recipient_code: string;
  name: string;
  type: string;
}>("/transferrecipient", {
  method: "POST",
  body: JSON.stringify({
    type: "nuban",
    name: "Tolu Robert",
    account_number: "0123456789",
    bank_code: "058",    // GTBank — get codes from List Banks endpoint
    currency: "NGN",
  }),
});
// recipient.data.recipient_code → "RCP_m7ljkv8leesep7p"
Ghana Bank Account (GHIPSS)
await paystackRequest("/transferrecipient", {
  method: "POST",
  body: JSON.stringify({
    type: "ghipss",
    name: "Kwame Asante",
    account_number: "0551234987",
    bank_code: "GH010100",
    currency: "GHS",
  }),
});
Mobile Money
await paystackRequest("/transferrecipient", {
  method: "POST",
  body: JSON.stringify({
    type: "mobile_money",
    name: "Ama Serwah",
    account_number: "0551234987",
    bank_code: "MTN",      // Mobile money provider code
    currency: "GHS",
  }),
});
Authorization-Based
await paystackRequest("/transferrecipient", {
  method: "POST",
  body: JSON.stringify({
    type: "authorization",
    name: "Customer Refund",
    authorization_code: "AUTH_ekk8t49ogj",
  }),
});

Bulk Create Transfer Recipients

POST /transferrecipient/bulk

ParamTypeRequiredDescription
batcharrayYesArray of recipient objects (same params as Create)
const result = await paystackRequest("/transferrecipient/bulk", {
  method: "POST",
  body: JSON.stringify({
    batch: [
      {
        type: "nuban",
        name: "Habenero Mundane",
        account_number: "0123456789",
        bank_code: "033",
        currency: "NGN",
      },
      {
        type: "nuban",
        name: "Soft Merry",
        account_number: "9876543210",
        bank_code: "50211",
        currency: "NGN",
      },
    ],
  }),
});
// result.data.success[] — successfully created recipients
// result.data.errors[] — failed recipients

List Transfer Recipients

GET /transferrecipient

ParamTypeRequiredDescription
perPageintegerNoRecords per page (default: 50)
pageintegerNoPage number (default: 1)
fromdatetimeNoStart date
todatetimeNoEnd date
const recipients = await paystackRequest("/transferrecipient?perPage=20&page=1");

Fetch Transfer Recipient

GET /transferrecipient/:id_or_code

const recipient = await paystackRequest(
  `/transferrecipient/${encodeURIComponent("RCP_m7ljkv8leesep7p")}`
);

Update Transfer Recipient

PUT /transferrecipient/:id_or_code

ParamTypeRequiredDescription
namestringYesUpdated recipient name
emailstringNoUpdated recipient email
await paystackRequest(
  `/transferrecipient/${encodeURIComponent("RCP_m7ljkv8leesep7p")}`,
  {
    method: "PUT",
    body: JSON.stringify({ name: "Rick Sanchez" }),
  }
);

Delete Transfer Recipient

DELETE /transferrecipient/:id_or_code

Sets the recipient to inactive (soft delete).

await paystackRequest(
  `/transferrecipient/${encodeURIComponent("RCP_m7ljkv8leesep7p")}`,
  { method: "DELETE" }
);

Comments

Markdown supported