Skip to content

Transfers

AsyncTransfer

Bases: BaseAsyncAPI

Provides a wrapper for paystack Transfers API

The Transfers API allows you to automate sending money on your integration https://paystack.com/docs/api/transfer/

Note

This feature is only available to businesses in Nigeria and Ghana.

Source code in src/pypaystack2/api/transfers.py
class AsyncTransfer(BaseAsyncAPI):
    """Provides a wrapper for paystack Transfers API

    The Transfers API allows you to automate sending money on your integration
    https://paystack.com/docs/api/transfer/

    Note
    ----
    This feature is only available to businesses in Nigeria and Ghana.
    """

    async def initiate(
        self,
        amount: int,
        recipient: str,
        reason: Optional[str] = None,
        currency: Optional[Currency] = None,
        reference: Optional[str] = None,
        source: str = "balance",
    ) -> Response:
        """Initiate transfer

        Args:
            amount: amount to transfer
            recipient: the beneficiary of the transfer
            reason: narration of the transfer
            currency: transfer currency
            reference: reference id
            source: transfer source

        Returns:
            A named tuple containing the response gotten from paystack's server.
        """
        amount = validate_amount(amount)

        url = self._parse_url("/transfer")

        payload = {
            "amount": amount,
            "recipient": recipient,
            "source": source,
        }
        optional_params = [
            ("reason", reason),
            ("reference", reference),
            ("currency", currency),
        ]
        payload = add_to_payload(optional_params, payload)
        return await self._handle_request(HTTPMethod.POST, url, payload)

    async def finalize(
        self,
        transfer_code: str,
        otp: str,
    ) -> Response:
        """Finalize transfer

        Args:
            transfer_code: The code for transfer.
            otp: One time password.

        Returns:
            A named tuple containing the response gotten from paystack's server.
        """

        url = self._parse_url("/transfer/finalize_transfer")

        payload = {
            "transfer_code": transfer_code,
            "otp": otp,
        }
        return await self._handle_request(HTTPMethod.POST, url, payload)

    async def bulk_transfer(
        self, transfers: list[TransferInstruction], source: str = "balance"
    ) -> Response:
        """Transfer in bulk

        Args:
            transfers: list of transfer instructions
            source: source of the funds to transfer

        Returns:
            A named tuple containing the response gotten from paystack's server.
        """

        url = self._parse_url("/transfer/bulk")

        payload = {
            "transfers": [tx.dict for tx in transfers],
            "source": source,
        }
        return await self._handle_request(HTTPMethod.POST, url, payload)

    async def get_transfers(
        self,
        page: int = 1,
        pagination: int = 50,
        customer: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
    ) -> Response:
        """Retrieve transfers made to a customer

        Args:
            customer: customer id
            page: Specifies exactly what page you want to retrieve.
                If not specified, we use a default value of 1.
            pagination: Specifies how many records you want to retrieve per page.
                If not specified, we use a default value of 50.
            start_date: A timestamp from which to start listing refund e.g. 2016-09-21
            end_date: A timestamp at which to stop listing refund e.g. 2016-09-21

        Returns:
            A named tuple containing the response gotten from paystack's server.
        """
        url = self._parse_url(f"/transfer?perPage={pagination}")
        query_params = [
            ("customer", customer),
            ("page", page),
            ("from", start_date),
            ("to", end_date),
        ]
        url = append_query_params(query_params, url)
        return await self._handle_request(HTTPMethod.GET, url)

    async def get_transfer(
        self,
        id_or_code: str,
    ) -> Response:
        """Retrieve a transfer

        Args:
            id_or_code: transfer ID or code

        Returns:
            A named tuple containing the response gotten from paystack's server.
        """
        url = self._parse_url(f"/transfer/{id_or_code}")
        return await self._handle_request(HTTPMethod.GET, url)

    async def verify(
        self,
        reference: str,
    ) -> Response:
        """Verify a transfer

        Args:
            reference: str

        Returns:
            A named tuple containing the response gotten from paystack's server.
        """
        url = self._parse_url(f"/transfer/verify/{reference}")
        return await self._handle_request(HTTPMethod.GET, url)

bulk_transfer(transfers, source='balance') async

Transfer in bulk

Parameters:

Name Type Description Default
transfers list[TransferInstruction]

list of transfer instructions

required
source str

source of the funds to transfer

'balance'

Returns:

Type Description
Response

A named tuple containing the response gotten from paystack's server.

Source code in src/pypaystack2/api/transfers.py
async def bulk_transfer(
    self, transfers: list[TransferInstruction], source: str = "balance"
) -> Response:
    """Transfer in bulk

    Args:
        transfers: list of transfer instructions
        source: source of the funds to transfer

    Returns:
        A named tuple containing the response gotten from paystack's server.
    """

    url = self._parse_url("/transfer/bulk")

    payload = {
        "transfers": [tx.dict for tx in transfers],
        "source": source,
    }
    return await self._handle_request(HTTPMethod.POST, url, payload)

finalize(transfer_code, otp) async

Finalize transfer

Parameters:

Name Type Description Default
transfer_code str

The code for transfer.

required
otp str

One time password.

required

Returns:

Type Description
Response

A named tuple containing the response gotten from paystack's server.

Source code in src/pypaystack2/api/transfers.py
async def finalize(
    self,
    transfer_code: str,
    otp: str,
) -> Response:
    """Finalize transfer

    Args:
        transfer_code: The code for transfer.
        otp: One time password.

    Returns:
        A named tuple containing the response gotten from paystack's server.
    """

    url = self._parse_url("/transfer/finalize_transfer")

    payload = {
        "transfer_code": transfer_code,
        "otp": otp,
    }
    return await self._handle_request(HTTPMethod.POST, url, payload)

get_transfer(id_or_code) async

Retrieve a transfer

Parameters:

Name Type Description Default
id_or_code str

transfer ID or code

required

Returns:

Type Description
Response

A named tuple containing the response gotten from paystack's server.

Source code in src/pypaystack2/api/transfers.py
async def get_transfer(
    self,
    id_or_code: str,
) -> Response:
    """Retrieve a transfer

    Args:
        id_or_code: transfer ID or code

    Returns:
        A named tuple containing the response gotten from paystack's server.
    """
    url = self._parse_url(f"/transfer/{id_or_code}")
    return await self._handle_request(HTTPMethod.GET, url)

get_transfers(page=1, pagination=50, customer=None, start_date=None, end_date=None) async

Retrieve transfers made to a customer

Parameters:

Name Type Description Default
customer Optional[str]

customer id

None
page int

Specifies exactly what page you want to retrieve. If not specified, we use a default value of 1.

1
pagination int

Specifies how many records you want to retrieve per page. If not specified, we use a default value of 50.

50
start_date Optional[str]

A timestamp from which to start listing refund e.g. 2016-09-21

None
end_date Optional[str]

A timestamp at which to stop listing refund e.g. 2016-09-21

None

Returns:

Type Description
Response

A named tuple containing the response gotten from paystack's server.

Source code in src/pypaystack2/api/transfers.py
async def get_transfers(
    self,
    page: int = 1,
    pagination: int = 50,
    customer: Optional[str] = None,
    start_date: Optional[str] = None,
    end_date: Optional[str] = None,
) -> Response:
    """Retrieve transfers made to a customer

    Args:
        customer: customer id
        page: Specifies exactly what page you want to retrieve.
            If not specified, we use a default value of 1.
        pagination: Specifies how many records you want to retrieve per page.
            If not specified, we use a default value of 50.
        start_date: A timestamp from which to start listing refund e.g. 2016-09-21
        end_date: A timestamp at which to stop listing refund e.g. 2016-09-21

    Returns:
        A named tuple containing the response gotten from paystack's server.
    """
    url = self._parse_url(f"/transfer?perPage={pagination}")
    query_params = [
        ("customer", customer),
        ("page", page),
        ("from", start_date),
        ("to", end_date),
    ]
    url = append_query_params(query_params, url)
    return await self._handle_request(HTTPMethod.GET, url)

initiate(amount, recipient, reason=None, currency=None, reference=None, source='balance') async

Initiate transfer

Parameters:

Name Type Description Default
amount int

amount to transfer

required
recipient str

the beneficiary of the transfer

required
reason Optional[str]

narration of the transfer

None
currency Optional[Currency]

transfer currency

None
reference Optional[str]

reference id

None
source str

transfer source

'balance'

Returns:

Type Description
Response

A named tuple containing the response gotten from paystack's server.

Source code in src/pypaystack2/api/transfers.py
async def initiate(
    self,
    amount: int,
    recipient: str,
    reason: Optional[str] = None,
    currency: Optional[Currency] = None,
    reference: Optional[str] = None,
    source: str = "balance",
) -> Response:
    """Initiate transfer

    Args:
        amount: amount to transfer
        recipient: the beneficiary of the transfer
        reason: narration of the transfer
        currency: transfer currency
        reference: reference id
        source: transfer source

    Returns:
        A named tuple containing the response gotten from paystack's server.
    """
    amount = validate_amount(amount)

    url = self._parse_url("/transfer")

    payload = {
        "amount": amount,
        "recipient": recipient,
        "source": source,
    }
    optional_params = [
        ("reason", reason),
        ("reference", reference),
        ("currency", currency),
    ]
    payload = add_to_payload(optional_params, payload)
    return await self._handle_request(HTTPMethod.POST, url, payload)

verify(reference) async

Verify a transfer

Parameters:

Name Type Description Default
reference str

str

required

Returns:

Type Description
Response

A named tuple containing the response gotten from paystack's server.

Source code in src/pypaystack2/api/transfers.py
async def verify(
    self,
    reference: str,
) -> Response:
    """Verify a transfer

    Args:
        reference: str

    Returns:
        A named tuple containing the response gotten from paystack's server.
    """
    url = self._parse_url(f"/transfer/verify/{reference}")
    return await self._handle_request(HTTPMethod.GET, url)

Transfer

Bases: BaseAPI

Provides a wrapper for paystack Transfers API

The Transfers API allows you to automate sending money on your integration https://paystack.com/docs/api/transfer/

Note

This feature is only available to businesses in Nigeria and Ghana.

Source code in src/pypaystack2/api/transfers.py
class Transfer(BaseAPI):
    """Provides a wrapper for paystack Transfers API

    The Transfers API allows you to automate sending money on your integration
    https://paystack.com/docs/api/transfer/

    Note
    ----
    This feature is only available to businesses in Nigeria and Ghana.
    """

    def initiate(
        self,
        amount: int,
        recipient: str,
        reason: Optional[str] = None,
        currency: Optional[Currency] = None,
        reference: Optional[str] = None,
        source: str = "balance",
    ) -> Response:
        """Initiate transfer

        Args:
            amount: amount to transfer
            recipient: the beneficiary of the transfer
            reason: narration of the transfer
            currency: transfer currency
            reference: reference id
            source: transfer source

        Returns:
            A named tuple containing the response gotten from paystack's server.
        """
        amount = validate_amount(amount)

        url = self._parse_url("/transfer")

        payload = {
            "amount": amount,
            "recipient": recipient,
            "source": source,
        }
        optional_params = [
            ("reason", reason),
            ("reference", reference),
            ("currency", currency),
        ]
        payload = add_to_payload(optional_params, payload)
        return self._handle_request(HTTPMethod.POST, url, payload)

    def finalize(
        self,
        transfer_code: str,
        otp: str,
    ) -> Response:
        """Finalize transfer

        Args:
            transfer_code: The code for transfer.
            otp: One time password.

        Returns:
            A named tuple containing the response gotten from paystack's server.
        """

        url = self._parse_url("/transfer/finalize_transfer")

        payload = {
            "transfer_code": transfer_code,
            "otp": otp,
        }
        return self._handle_request(HTTPMethod.POST, url, payload)

    def bulk_transfer(
        self, transfers: list[TransferInstruction], source: str = "balance"
    ) -> Response:
        """Transfer in bulk

        Args:
            transfers: list of transfer instructions
            source: source of the funds to transfer

        Returns:
            A named tuple containing the response gotten from paystack's server.
        """

        url = self._parse_url("/transfer/bulk")

        payload = {
            "transfers": [tx.dict for tx in transfers],
            "source": source,
        }
        return self._handle_request(HTTPMethod.POST, url, payload)

    def get_transfers(
        self,
        page: int = 1,
        pagination: int = 50,
        customer: Optional[str] = None,
        start_date: Optional[str] = None,
        end_date: Optional[str] = None,
    ) -> Response:
        """Retrieve transfers made to a customer

        Args:
            customer: customer id
            page: Specifies exactly what page you want to retrieve.
                If not specified, we use a default value of 1.
            pagination: Specifies how many records you want to retrieve per page.
                If not specified, we use a default value of 50.
            start_date: A timestamp from which to start listing refund e.g. 2016-09-21
            end_date: A timestamp at which to stop listing refund e.g. 2016-09-21

        Returns:
            A named tuple containing the response gotten from paystack's server.
        """
        url = self._parse_url(f"/transfer?perPage={pagination}")
        query_params = [
            ("customer", customer),
            ("page", page),
            ("from", start_date),
            ("to", end_date),
        ]
        url = append_query_params(query_params, url)
        return self._handle_request(HTTPMethod.GET, url)

    def get_transfer(
        self,
        id_or_code: str,
    ) -> Response:
        """Retrieve a transfer

        Args:
            id_or_code: transfer ID or code

        Returns:
            A named tuple containing the response gotten from paystack's server.
        """
        url = self._parse_url(f"/transfer/{id_or_code}")
        return self._handle_request(HTTPMethod.GET, url)

    def verify(
        self,
        reference: str,
    ) -> Response:
        """Verify a transfer

        Args:
            reference: str

        Returns:
            A named tuple containing the response gotten from paystack's server.
        """
        url = self._parse_url(f"/transfer/verify/{reference}")
        return self._handle_request(HTTPMethod.GET, url)

bulk_transfer(transfers, source='balance')

Transfer in bulk

Parameters:

Name Type Description Default
transfers list[TransferInstruction]

list of transfer instructions

required
source str

source of the funds to transfer

'balance'

Returns:

Type Description
Response

A named tuple containing the response gotten from paystack's server.

Source code in src/pypaystack2/api/transfers.py
def bulk_transfer(
    self, transfers: list[TransferInstruction], source: str = "balance"
) -> Response:
    """Transfer in bulk

    Args:
        transfers: list of transfer instructions
        source: source of the funds to transfer

    Returns:
        A named tuple containing the response gotten from paystack's server.
    """

    url = self._parse_url("/transfer/bulk")

    payload = {
        "transfers": [tx.dict for tx in transfers],
        "source": source,
    }
    return self._handle_request(HTTPMethod.POST, url, payload)

finalize(transfer_code, otp)

Finalize transfer

Parameters:

Name Type Description Default
transfer_code str

The code for transfer.

required
otp str

One time password.

required

Returns:

Type Description
Response

A named tuple containing the response gotten from paystack's server.

Source code in src/pypaystack2/api/transfers.py
def finalize(
    self,
    transfer_code: str,
    otp: str,
) -> Response:
    """Finalize transfer

    Args:
        transfer_code: The code for transfer.
        otp: One time password.

    Returns:
        A named tuple containing the response gotten from paystack's server.
    """

    url = self._parse_url("/transfer/finalize_transfer")

    payload = {
        "transfer_code": transfer_code,
        "otp": otp,
    }
    return self._handle_request(HTTPMethod.POST, url, payload)

get_transfer(id_or_code)

Retrieve a transfer

Parameters:

Name Type Description Default
id_or_code str

transfer ID or code

required

Returns:

Type Description
Response

A named tuple containing the response gotten from paystack's server.

Source code in src/pypaystack2/api/transfers.py
def get_transfer(
    self,
    id_or_code: str,
) -> Response:
    """Retrieve a transfer

    Args:
        id_or_code: transfer ID or code

    Returns:
        A named tuple containing the response gotten from paystack's server.
    """
    url = self._parse_url(f"/transfer/{id_or_code}")
    return self._handle_request(HTTPMethod.GET, url)

get_transfers(page=1, pagination=50, customer=None, start_date=None, end_date=None)

Retrieve transfers made to a customer

Parameters:

Name Type Description Default
customer Optional[str]

customer id

None
page int

Specifies exactly what page you want to retrieve. If not specified, we use a default value of 1.

1
pagination int

Specifies how many records you want to retrieve per page. If not specified, we use a default value of 50.

50
start_date Optional[str]

A timestamp from which to start listing refund e.g. 2016-09-21

None
end_date Optional[str]

A timestamp at which to stop listing refund e.g. 2016-09-21

None

Returns:

Type Description
Response

A named tuple containing the response gotten from paystack's server.

Source code in src/pypaystack2/api/transfers.py
def get_transfers(
    self,
    page: int = 1,
    pagination: int = 50,
    customer: Optional[str] = None,
    start_date: Optional[str] = None,
    end_date: Optional[str] = None,
) -> Response:
    """Retrieve transfers made to a customer

    Args:
        customer: customer id
        page: Specifies exactly what page you want to retrieve.
            If not specified, we use a default value of 1.
        pagination: Specifies how many records you want to retrieve per page.
            If not specified, we use a default value of 50.
        start_date: A timestamp from which to start listing refund e.g. 2016-09-21
        end_date: A timestamp at which to stop listing refund e.g. 2016-09-21

    Returns:
        A named tuple containing the response gotten from paystack's server.
    """
    url = self._parse_url(f"/transfer?perPage={pagination}")
    query_params = [
        ("customer", customer),
        ("page", page),
        ("from", start_date),
        ("to", end_date),
    ]
    url = append_query_params(query_params, url)
    return self._handle_request(HTTPMethod.GET, url)

initiate(amount, recipient, reason=None, currency=None, reference=None, source='balance')

Initiate transfer

Parameters:

Name Type Description Default
amount int

amount to transfer

required
recipient str

the beneficiary of the transfer

required
reason Optional[str]

narration of the transfer

None
currency Optional[Currency]

transfer currency

None
reference Optional[str]

reference id

None
source str

transfer source

'balance'

Returns:

Type Description
Response

A named tuple containing the response gotten from paystack's server.

Source code in src/pypaystack2/api/transfers.py
def initiate(
    self,
    amount: int,
    recipient: str,
    reason: Optional[str] = None,
    currency: Optional[Currency] = None,
    reference: Optional[str] = None,
    source: str = "balance",
) -> Response:
    """Initiate transfer

    Args:
        amount: amount to transfer
        recipient: the beneficiary of the transfer
        reason: narration of the transfer
        currency: transfer currency
        reference: reference id
        source: transfer source

    Returns:
        A named tuple containing the response gotten from paystack's server.
    """
    amount = validate_amount(amount)

    url = self._parse_url("/transfer")

    payload = {
        "amount": amount,
        "recipient": recipient,
        "source": source,
    }
    optional_params = [
        ("reason", reason),
        ("reference", reference),
        ("currency", currency),
    ]
    payload = add_to_payload(optional_params, payload)
    return self._handle_request(HTTPMethod.POST, url, payload)

verify(reference)

Verify a transfer

Parameters:

Name Type Description Default
reference str

str

required

Returns:

Type Description
Response

A named tuple containing the response gotten from paystack's server.

Source code in src/pypaystack2/api/transfers.py
def verify(
    self,
    reference: str,
) -> Response:
    """Verify a transfer

    Args:
        reference: str

    Returns:
        A named tuple containing the response gotten from paystack's server.
    """
    url = self._parse_url(f"/transfer/verify/{reference}")
    return self._handle_request(HTTPMethod.GET, url)