async def METHOD_NAME(
    self,
    amount: int,
    memo: Optional[str] = None,
    description_hash: Optional[bytes] = None,
    unhashed_description: Optional[bytes] = None,
    **kwargs,
) -> InvoiceResponse:
    data: Dict = {"out": False, "amount": amount, "memo": memo or ""}
    if kwargs.get("expiry"):
        data["expiry"] = kwargs["expiry"]
    if description_hash:
        data["description_hash"] = description_hash.hex()
    if unhashed_description:
        data["unhashed_description"] = unhashed_description.hex()
    r = await self.client.post(url="/api/v1/payments", json=data)
    ok, checking_id, payment_request, error_message = (
        not r.is_error,
        None,
        None,
        None,
    )
    if r.is_error:
        error_message = r.json()["detail"]
    else:
        data = r.json()
        checking_id, payment_request = data["checking_id"], data["payment_request"]
    return InvoiceResponse(ok, checking_id, payment_request, error_message)