paystack-transfer-recipients

Paystack Transfer Recipients API — create, list, fetch, update, and delete transfer recipients (beneficiaries) for payouts. Supports NUBAN (Nigeria), GHIPSS (Ghana), Mobile Money, BASA (South Africa), and authorization-based recipients. Use this skill whenever adding bank accounts or mobile wallets as payout destinations, creating transfer recipients before initiating transfers, managing beneficiary lists, or doing bulk recipient creation. Also use when you see references to recipient_code, RCP_ prefixed codes, or the /transferrecipient endpoint.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "paystack-transfer-recipients" with this command: npx skills add rexedge/paystack/rexedge-paystack-paystack-transfer-recipients

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" }
);

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

paystack-transfers

No summary provided by upstream source.

Repository SourceNeeds Review
General

paystack-plans

No summary provided by upstream source.

Repository SourceNeeds Review
General

paystack-charges

No summary provided by upstream source.

Repository SourceNeeds Review