diff --git a/src/types/order_info.rs b/src/types/order_info.rs
index e5b35bbc..a512b7ac 100644
--- a/src/types/order_info.rs
+++ b/src/types/order_info.rs
@@ -5,17 +5,17 @@ use crate::types::ShippingAddress;
 /// This object represents information about an order.
 ///
 /// [The official docs](https://core.telegram.org/bots/api#orderinfo).
-#[derive(Clone, Debug, Eq, Hash, PartialEq, Serialize, Deserialize)]
+#[derive(Clone, Debug, Eq, Hash, PartialEq, Serialize, Deserialize, Default)]
 pub struct OrderInfo {
     /// User's name.
-    pub name: String,
+    pub name: Option<String>,
 
     /// User's phone number.
-    pub phone_number: String,
+    pub phone_number: Option<String>,
 
     /// User's email.
-    pub email: String,
+    pub email: Option<String>,
 
     /// User's shipping address.
-    pub shipping_address: ShippingAddress,
+    pub shipping_address: Option<ShippingAddress>,
 }
diff --git a/src/types/pre_checkout_query.rs b/src/types/pre_checkout_query.rs
index 172e5e8f..75fb909c 100644
--- a/src/types/pre_checkout_query.rs
+++ b/src/types/pre_checkout_query.rs
@@ -35,5 +35,6 @@ pub struct PreCheckoutQuery {
     pub shipping_option_id: Option<String>,
 
     /// Order info provided by the user.
-    pub order_info: Option<OrderInfo>,
+    #[serde(default)]
+    pub order_info: OrderInfo,
 }
diff --git a/src/types/successful_payment.rs b/src/types/successful_payment.rs
index d38a36b5..270768c4 100644
--- a/src/types/successful_payment.rs
+++ b/src/types/successful_payment.rs
@@ -29,7 +29,8 @@ pub struct SuccessfulPayment {
     pub shipping_option_id: Option<String>,
 
     /// Order info provided by the user.
-    pub order_info: Option<OrderInfo>,
+    #[serde(default)]
+    pub order_info: OrderInfo,
 
     /// Telegram payment identifier.
     pub telegram_payment_charge_id: String,