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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
//! Model struct for Invoice type
use serde::{Deserialize, Serialize};
use super::{
DateTime, InvoiceAcceptedPaymentMethods, InvoiceAttachment, InvoiceCustomField,
InvoicePaymentRequest, InvoiceRecipient, Money,
enums::{InvoiceDeliveryMethod, InvoiceStatus, Timezone},
};
/// Stores information about an invoice.
///
/// You use the Invoices API to create and manage invoices. For more information, see [Invoices API
/// Overview](https://developer.squareup.com/docs/invoices-api/overview).
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
pub struct Invoice {
/// **Read only** The Square-assigned ID of the invoice.
pub id: Option<String>,
/// The Square-assigned version number, which is incremented each time an update is committed to
/// the invoice.
pub version: Option<i32>,
/// The ID of the location that this invoice is associated with.
///
/// If specified in a `CreateInvoice` request, the value must match the `location_id` of the
/// associated order.
///
/// Min Length: 1, Max Length: 255
pub location_id: Option<String>,
/// The ID of the [Order] for which the invoice is created. This field is required when creating
/// an invoice, and the order must be in the `OPEN` state.
///
/// To view the line items and other information for the associated order, call the
/// [RetrieveOrder](https://developer.squareup.com/reference/square/orders-api/retrieve-order)
/// endpoint using the order ID.
///
/// Min Length: 1, Max Length: 255
pub order_id: Option<String>,
/// The customer who receives the invoice. This customer data is displayed on the invoice and
/// used by Square to deliver the invoice.
///
/// This field is required to publish an invoice, and it must specify the `customer_id`.
pub primary_recipient: Option<InvoiceRecipient>,
/// The payment schedule for the invoice, represented by one or more payment requests that
/// define payment settings, such as amount due and due date. An invoice supports the following
/// payment request combinations:
///
/// - One balance
/// - One deposit with one balance
/// - 2–12 installments
/// - One deposit with 2–12 installments
///
/// This field is required when creating an invoice. It must contain at least one payment
/// request. All payment requests for the invoice must equal the total order amount. For more
/// information, see [Configuring payment
/// requests](https://developer.squareup.com/docs/invoices-api/create-publish-invoices#payment-requests).
///
/// Adding `INSTALLMENT` payment requests to an invoice requires an [Invoices Plus
/// subscription](https://developer.squareup.com/docs/invoices-api/overview#invoices-plus-subscription).
///
/// Min Length: 1, Max Length: 13
pub payment_requests: Option<Vec<InvoicePaymentRequest>>,
/// The delivery method that Square uses to send the invoice, reminders, and receipts to the
/// customer. After the invoice is published, Square processes the invoice based on the delivery
/// method and payment request settings, either immediately or on the `scheduled_at` date, if
/// specified. For example, Square might send the invoice or receipt for an automatic payment.
/// For invoices with automatic payments, this field must be set to `EMAIL`.
///
/// One of the following is required when creating an invoice:
///
/// - (Recommended) This `delivery_method` field. To configure an automatic payment, the
/// `automatic_payment_source` field of the payment request is also required.
/// - The deprecated `request_method` field of the payment request. Note that `invoice` objects
/// returned in responses do not include `request_method`.
pub delivery_method: Option<InvoiceDeliveryMethod>,
/// A user-friendly invoice number that is displayed on the invoice. The value is unique within
/// a location. If not provided when creating an invoice, Square assigns a value. It increments
/// from 1 and is padded with zeros making it 7 characters long (for example, 0000001 and
/// 0000002).
///
/// Min Length: 1, Max Length: 191
pub invoice_number: Option<String>,
/// The title of the invoice, which is displayed on the invoice.
///
/// Min Length: 1, Max Length: 255
pub title: Option<String>,
/// The description of the invoice, which is displayed on the invoice.
///
/// Min Length: 1, Max Length: 65536
pub description: Option<String>,
/// The timestamp when the invoice is scheduled for processing, in RFC 3339 format. After the
/// invoice is published, Square processes the invoice on the specified date, according to the
/// delivery method and payment request settings.
///
/// If the field is not set, Square processes the invoice immediately after it is published.
pub scheduled_at: Option<DateTime>,
/// **Read only** The URL of the Square-hosted invoice page. After you publish the invoice using
/// the `PublishInvoice` endpoint, Square hosts the invoice page and returns the page URL in the
/// response.
pub public_url: Option<String>,
/// Read only The current amount due for the invoice. In addition to the amount due on the next
/// payment request, this includes any overdue payment amounts.
pub next_payment_amount_money: Option<Money>,
/// **Read only** The status of the invoice.
pub status: Option<InvoiceStatus>,
/// Read only The time zone used to interpret calendar dates on the invoice, such as `due_date`.
/// When an invoice is created, this field is set to the `timezone` specified for the seller
/// location. The value cannot be changed.
pub timezone: Option<Timezone>,
/// **Read only** The timestamp when the invoice was created, in RFC 3339 format.
pub created_at: Option<DateTime>,
/// **Read only** The timestamp when the invoice was last updated, in RFC 3339 format.
pub updated_at: Option<DateTime>,
/// The payment methods that customers can use to pay the invoice on the Square-hosted invoice
/// page. This setting is independent of any automatic payment requests for the invoice.
///
/// This field is required when creating an invoice and must set at least one payment method to
/// `true`.
pub accepted_payment_methods: Option<InvoiceAcceptedPaymentMethods>,
/// Additional seller-defined fields that are displayed on the invoice. For more information,
/// see [Custom
/// fields](https://developer.squareup.com/docs/invoices-api/overview#custom-fields).
///
/// Adding custom fields to an invoice requires an [Invoices Plus
/// subscription](https://developer.squareup.com/docs/invoices-api/overview#invoices-plus-subscription).
///
/// Max: 2 custom fields
///
/// Max Length: 2
pub custom_fields: Option<Vec<InvoiceCustomField>>,
/// **Read only** The ID of the
/// [subscription](https://developer.squareup.com/reference/square/objects/Subscription)
/// associated with the invoice. This field is present only on subscription billing invoices.
pub subscription_id: Option<String>,
/// The date of the sale or the date that the service is rendered, in `YYYY-MM-DD` format. This
/// field can be used to specify a past or future date which is displayed on the invoice.
pub sale_or_service_date: Option<String>,
/// **France only**. The payment terms and conditions that are displayed on the invoice. For
/// more information, see [Payment
/// conditions](https://developer.squareup.com/docs/invoices-api/overview#payment-conditions).
///
/// For countries other than France, Square returns an `INVALID_REQUEST_ERROR` with a
/// `BAD_REQUEST` code and "Payment conditions are not supported for this location's country"
/// detail if this field is included in `CreateInvoice` or `UpdateInvoice` requests.
///
/// Min Length: 1, Max Length: 2000
pub payment_conditions: Option<String>,
/// Indicates whether to allow a customer to save a credit or debit card as a card on file or a
/// bank transfer as a bank account on file. If `true`, Square displays a **Save my card on
/// file** or **Save my bank on file** checkbox on the invoice payment page. Stored payment
/// information can be used for future automatic payments. The default value is `false`.
pub store_payment_method_enabled: Option<bool>,
/// Read only Metadata about the attachments on the invoice. Invoice attachments are managed using the
/// CreateInvoiceAttachment and DeleteInvoiceAttachment endpoints.
/// Max Length 10
pub attachments: Option<Vec<InvoiceAttachment>>,
}