public static function update(
        int $requestResponseId,
        int $monetaryAccountId = null,
        Amount $amountResponded = null,
        string $status = null,
        Address $addressShipping = null,
        Address $addressBilling = null,
        array $customHeaders = []
    ): BunqResponseRequestResponse {
        $apiClient = new ApiClient(static::getApiContext());
        $responseRaw = $apiClient->put(
            vsprintf(
                self::ENDPOINT_URL_UPDATE,
                [static::determineUserId(), static::determineMonetaryAccountId($monetaryAccountId), $requestResponseId]
            ),
            [
                self::FIELD_AMOUNT_RESPONDED => $amountResponded,
                self::FIELD_STATUS => $status,
                self::FIELD_ADDRESS_SHIPPING => $addressShipping,
                self::FIELD_ADDRESS_BILLING => $addressBilling,
            ],
            $customHeaders
        );

        return BunqResponseRequestResponse::castFromBunqResponse(
            static::fromJson($responseRaw, self::OBJECT_TYPE_PUT)
        );
    }