diff --git a/CHANGELOG.md b/CHANGELOG.md
index deaea888..a43791bc 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,11 @@ All notable changes to this project will be documented in this file.
 The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
 and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
 
+## [0.3.2] - 2020-10-23
+
+### Added
+ - `LoginUrl::new` ([issue 298](https://github.com/teloxide/teloxide/issues/298))
+
 ## [0.3.1] - 2020-08-25
 
 ### Added
diff --git a/Cargo.toml b/Cargo.toml
index dc1562ee..7168293a 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "teloxide"
-version = "0.3.1"
+version = "0.3.2"
 edition = "2018"
 description = "An elegant Telegram bots framework for Rust"
 repository = "https://github.com/teloxide/teloxide"
diff --git a/README.md b/README.md
index 9dad8c5a..d487a130 100644
--- a/README.md
+++ b/README.md
@@ -76,8 +76,8 @@ $ rustup override set nightly
  5. Execute `cargo new my_bot`, enter the directory and put these lines into your `Cargo.toml`:
 ```toml
 [dependencies]
-teloxide = "0.3.1"
-teloxide-macros = "0.3.2"
+teloxide = "0.3"
+teloxide-macros = "0.3"
 
 log = "0.4.8"
 pretty_env_logger = "0.4.0"
diff --git a/src/types/login_url.rs b/src/types/login_url.rs
index 5c683df0..36515cd6 100644
--- a/src/types/login_url.rs
+++ b/src/types/login_url.rs
@@ -23,6 +23,13 @@ pub struct LoginUrl {
 }
 
 impl LoginUrl {
+    pub fn new<S>(url: S) -> Self
+    where
+        S: Into<String>,
+    {
+        Self { url: url.into(), forward_text: None, bot_username: None, request_write_access: None }
+    }
+
     pub fn url<S>(mut self, val: S) -> Self
     where
         S: Into<String>,