<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def create(cls, amount_inquired, counterparty_alias, description, allow_bunqme, monetary_account_id=None, attachment=None, merchant_reference=None, status=None, minimum_age=None, require_address=None, want_tip=None, allow_amount_lower=None, allow_amount_higher=None, redirect_url=None, event_id=None, custom_headers=None):
 """ Create a new payment request. :type user_id: int :type monetary_account_id: int :param amount_inquired: The Amount requested to be paid by the person the RequestInquiry is sent to. Must be bigger than 0. :type amount_inquired: object_.Amount :param counterparty_alias: The Alias of the party we are requesting the money from. Can be an Alias of type EMAIL, PHONE_NUMBER or IBAN. In case the EMAIL or PHONE_NUMBER Alias does not refer to a bunq monetary account, 'allow_bunqme' needs to be 'true' in order to trigger the creation of a bunq.me request. Otherwise no request inquiry will be sent. :type counterparty_alias: object_.Pointer :param description: The description for the RequestInquiry. Maximum 9000 characters. Field is required but can be an empty string. :type description: str :param allow_bunqme: Whether or not sending a bunq.me request is allowed. :type allow_bunqme: bool :param attachment: The Attachments to attach to the RequestInquiry. :type attachment: list[object_.BunqId] :param merchant_reference: Optional data to be included with the RequestInquiry specific to the merchant. Has to be unique for the same source MonetaryAccount. :type merchant_reference: str :param status: The status of the RequestInquiry. Ignored in POST requests but can be used for revoking (cancelling) the RequestInquiry by setting REVOKED with a PUT request. :type status: str :param minimum_age: The minimum age the user accepting the RequestInquiry must have. Defaults to not checking. If set, must be between 12 and 100 inclusive. :type minimum_age: int :param require_address: Whether a billing and shipping address must be provided when paying the request. Possible values are: BILLING, SHIPPING, BILLING_SHIPPING, NONE, OPTIONAL. Default is NONE. :type require_address: str :param want_tip: [DEPRECATED] Whether or not the accepting user can give an extra tip on top of the requested Amount. Defaults to false. :type want_tip: bool :param allow_amount_lower: [DEPRECATED] Whether or not the accepting user can choose to accept with a lower amount than requested. Defaults to false. :type allow_amount_lower: bool :param allow_amount_higher: [DEPRECATED] Whether or not the accepting user can choose to accept with a higher amount than requested. Defaults to false. :type allow_amount_higher: bool :param redirect_url: The URL which the user is sent to after accepting or rejecting the Request. :type redirect_url: str :param event_id: The ID of the associated event if the request was made using 'split the bill'. :type event_id: int :type custom_headers: dict[str, str]|None :rtype: BunqResponseInt """


        if custom_headers is None:
            custom_headers = {}

        request_map = {
            cls.FIELD_AMOUNT_INQUIRED: amount_inquired,
            cls.FIELD_COUNTERPARTY_ALIAS: counterparty_alias,
            cls.FIELD_DESCRIPTION: description,
            cls.FIELD_ATTACHMENT: attachment,
            cls.FIELD_MERCHANT_REFERENCE: merchant_reference,
            cls.FIELD_STATUS: status,
            cls.FIELD_MINIMUM_AGE: minimum_age,
            cls.FIELD_REQUIRE_ADDRESS: require_address,
            cls.FIELD_WANT_TIP: want_tip,
            cls.FIELD_ALLOW_AMOUNT_LOWER: allow_amount_lower,
            cls.FIELD_ALLOW_AMOUNT_HIGHER: allow_amount_higher,
            cls.FIELD_ALLOW_BUNQME: allow_bunqme,
            cls.FIELD_REDIRECT_URL: redirect_url,
            cls.FIELD_EVENT_ID: event_id
        }
        request_map_string = converter.class_to_json(request_map)
        request_map_string = cls._remove_field_for_request(request_map_string)

        api_client = client.ApiClient(cls._get_api_context())
        request_bytes = request_map_string.encode()
        endpoint_url = cls._ENDPOINT_URL_CREATE.format(cls._determine_user_id(),
                                                       cls._determine_monetary_account_id(
                                                           monetary_account_id))
        response_raw = api_client.post(endpoint_url, request_bytes,
                                       custom_headers)

        return BunqResponseInt.cast_from_bunq_response(
            cls._process_for_id(response_raw)
        )