1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
//! Model struct for Tender type
use serde::{Deserialize, Serialize};
use super::{
enums::TenderType, AdditionalRecipient, DateTime, Money, TenderCardDetails, TenderCashDetails,
};
/// Represents a tender (i.e., a method of payment) used in a Square transaction.
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct Tender {
/// The tender's unique ID.
pub id: Option<String>,
/// The ID of the transaction's associated location.
pub location_id: Option<String>,
/// The ID of the tender's associated transaction.
pub transaction_id: Option<String>,
/// **Read only** The timestamp for when the tender was created.
pub created_at: Option<DateTime>,
/// An optional note associated with the tender at the time of payment.
pub note: Option<String>,
/// The total amount of the tender, including `tip_money`. If the tender has a `payment_id`, the
/// `total_money` of the corresponding [Payment] will be equal to the `amount_money` of the
/// tender.
pub amount_money: Option<Money>,
/// The tip's amount of the tender.
pub tip_money: Option<Money>,
/// The amount of any Square processing fees applied to the tender.
///
/// This field is not immediately populated when a new transaction is created. It is usually
/// available after about ten seconds.
pub processing_fee_money: Option<Money>,
/// If the tender is associated with a customer or represents a customer's card on file, this is
/// the ID of the associated customer.
pub customer_id: Option<String>,
/// **Required** The type of tender, such as `CARD` or `CASH`.
pub r#type: TenderType,
/// The details of the card tender.
///
/// This value is present only if the value of `type` is `CARD`.
pub card_details: Option<TenderCardDetails>,
/// The details of the cash tender.
///
/// This value is present only if the value of `type` is `CASH`.
pub cash_details: Option<TenderCashDetails>,
/// Additional recipients (other than the merchant) receiving a portion of this tender. For
/// example, fees assessed on the purchase by a third party integration.
#[deprecated]
pub additional_recipients: Option<Vec<AdditionalRecipient>>,
/// The ID of the [Payment] that corresponds to this tender. This value is only
/// present for payments created with the v2 Payments API.
pub payment_id: Option<String>,
}