Yes, factory methods in the companion object is a common pattern in Kotlin.
You can even make them look like a constructor, callable with
Classname(…), by defining them as
operator fun invoke(…).
That’s not always appropriate. In Java, factory methods are recommended where a method name would add useful extra information, and to avoid having multiple constructors that could get confused (especially if they have the same number of parameters with similar types) — both of which are reasons for explicitly-named factory methods. But if there’s no risk of confusion, and no extra information you can add, then making them look like constructors can give the calling code one less thing to worry about.
However you name them, factory methods are a powerful tool and well worth considering. (In fact, they’re the very first item in all 3 editions of Effective Java!) Other advantages that apply whatever the name are that you can return a subclass and/or a cached object; and they don’t have the restriction on the amount of processing you can do before calling another constructor or a superclass constructor.
Factory methods have downsides, too, of course — the main one being making it awkward to subclass. But if you have control over the superclass, you can usually work around that.