-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathubl2.1-common.go
3304 lines (3166 loc) · 186 KB
/
ubl2.1-common.go
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
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
package myinvois
// A character string (i.e. a finite set of characters), generally in the form of words of a
// language.
//
// A character string (i.e. a finite set of characters) generally in the form of words of a
// language.
//
// A character string that constitutes the distinctive designation of a person, place, thing
// or concept.
type TextType struct {
Empty string `json:"_"`
LanguageID string `json:"languageID,omitempty"`
LanguageLocaleID string `json:"languageLocaleID,omitempty"`
}
// A character string (letters, figures, or symbols) that for brevity and/or language
// independence may be used to represent or replace a definitive value or text of an
// attribute, together with relevant supplementary information.
//
// A character string (letters, figures, or symbols) that for brevity and/or languange
// independence may be used to represent or replace a definitive value or text of an
// attribute together with relevant supplementary information.
type CodeType struct {
Empty string `json:"_"`
ListID string `json:"listID,omitempty"`
ListAgencyID string `json:"listAgencyID,omitempty"`
ListAgencyName string `json:"listAgencyName,omitempty"`
ListName string `json:"listName,omitempty"`
ListVersionID string `json:"listVersionID,omitempty"`
Name string `json:"name,omitempty"`
LanguageID string `json:"languageID,omitempty"`
ListURI string `json:"listURI,omitempty"`
ListSchemeURI string `json:"listSchemeURI,omitempty"`
}
// A class to describe a customer party.
type CustomerPartyDetails struct {
// An identifier for the customer's account, assigned by the customer itself.
CustomerAssignedAccountID []IdentifierType `json:"CustomerAssignedAccountID,omitempty"`
// An identifier for the customer's account, assigned by the supplier.
SupplierAssignedAccountID []IdentifierType `json:"SupplierAssignedAccountID,omitempty"`
// An identifier for the customer's account, assigned by a third party.
AdditionalAccountID []IdentifierType `json:"AdditionalAccountID,omitempty"`
// The customer party itself.
Party []PartyDetails `json:"Party,omitempty"`
// A customer contact for deliveries.
DeliveryContact []ContactDetails `json:"DeliveryContact,omitempty"`
// A customer contact for accounting.
AccountingContact []ContactDetails `json:"AccountingContact,omitempty"`
// A customer contact for purchasing.
BuyerContact []ContactDetails `json:"BuyerContact,omitempty"`
}
// A class to describe a contactable person or department in an organization.
type ContactDetails struct {
// An identifier for this contact.
ID []IdentifierType `json:"ID,omitempty"`
// The name of this contact. It is recommended that this be used for a functional name and
// not a personal name.
Name []TextType `json:"Name,omitempty"`
// The primary telephone number of this contact.
Telephone []TextType `json:"Telephone,omitempty"`
// The primary fax number of this contact.
Telefax []TextType `json:"Telefax,omitempty"`
// The primary email address of this contact.
ElectronicMail []TextType `json:"ElectronicMail,omitempty"`
// Free-form text conveying information that is not contained explicitly in other
// structures; in particular, a textual description of the circumstances under which this
// contact can be used (e.g., "emergency" or "after hours").
Note []TextType `json:"Note,omitempty"`
// Another means of communication with this contact.
OtherCommunication []CommunicationDetails `json:"OtherCommunication,omitempty"`
}
// A character string to identify and uniquely distinguish one instance of an object in an
// identification scheme from all other objects in the same scheme, together with relevant
// supplementary information.
//
// A character string to identify and distinguish uniquely, one instance of an object in an
// identification scheme from all other objects in the same scheme together with relevant
// supplementary information.
type IdentifierType struct {
Empty string `json:"_"`
SchemeAgencyID string `json:"schemeAgencyID,omitempty"`
SchemeAgencyName string `json:"schemeAgencyName,omitempty"`
SchemeDataURI string `json:"schemeDataURI,omitempty"`
SchemeID string `json:"schemeID,omitempty"`
SchemeName string `json:"schemeName,omitempty"`
SchemeURI string `json:"schemeURI,omitempty"`
SchemeVersionID string `json:"schemeVersionID,omitempty"`
}
// A class to describe a means of communication.
type CommunicationDetails struct {
// The method of communication, expressed as text.
Channel []TextType `json:"Channel,omitempty"`
// The method of communication, expressed as a code.
ChannelCode []CodeType `json:"ChannelCode,omitempty"`
// An identifying value (phone number, email address, etc.) for this channel of communication
Value []TextType `json:"Value,omitempty"`
}
// A class to describe a party contracting to provide services, such as transportation,
// finance, etc.
type ServiceProviderPartyDetails struct {
// An identifier for this service provider.
ID []IdentifierType `json:"ID,omitempty"`
// The party providing the service.
Party []PartyDetails `json:"Party"`
// The contact for the service provider.
SellerContact []ContactDetails `json:"SellerContact,omitempty"`
// The type of service provided, expressed as text.
ServiceType []TextType `json:"ServiceType,omitempty"`
// The type of service provided, expressed as a code.
ServiceTypeCode []CodeType `json:"ServiceTypeCode,omitempty"`
}
// A class to describe a power of attorney.
type PowerOfAttorneyDetails struct {
// The party who acts as an agent or fiduciary for the principal and who holds this power of
// attorney on behalf of the principal.
AgentParty []PartyDetails `json:"AgentParty"`
// Text describing this power of attorney.
Description []TextType `json:"Description,omitempty"`
// An identifier for this power of attorney.
ID []IdentifierType `json:"ID,omitempty"`
// The date on which this power of attorney was issued.
IssueDate []DateType `json:"IssueDate,omitempty"`
// The time at which this power of attorney was issued.
IssueTime []TimeType `json:"IssueTime,omitempty"`
// A reference to a mandate associated with this power of attorney.
MandateDocumentReference []DocumentReferenceDetails `json:"MandateDocumentReference,omitempty"`
// The party notarizing this power of attorney.
NotaryParty []PartyDetails `json:"NotaryParty,omitempty"`
// An association to a WitnessParty.
WitnessParty []PartyDetails `json:"WitnessParty,omitempty"`
}
// A class to describe the result of an attempt to verify a signature.
type ResultOfVerificationDetails struct {
// The signing party.
SignatoryParty []PartyDetails `json:"SignatoryParty,omitempty"`
// The verification process.
ValidateProcess []TextType `json:"ValidateProcess,omitempty"`
// The tool used to verify the signature.
ValidateTool []TextType `json:"ValidateTool,omitempty"`
// The version of the tool used to verify the signature.
ValidateToolVersion []TextType `json:"ValidateToolVersion,omitempty"`
// The date upon which verification took place.
ValidationDate []DateType `json:"ValidationDate,omitempty"`
// A code signifying the result of the verification.
ValidationResultCode []CodeType `json:"ValidationResultCode,omitempty"`
// The time at which verification took place.
ValidationTime []TimeType `json:"ValidationTime,omitempty"`
// An identifier for the organization, person, service, or server that verified the
// signature.
ValidatorID []IdentifierType `json:"ValidatorID,omitempty"`
}
// A class to define a reference to a document.
type DocumentReferenceDetails struct {
// The referenced document as an attachment to the document from which it is referenced.
Attachment []AttachmentDetails `json:"Attachment,omitempty"`
// An indicator that the referenced document is a copy (true) or the original (false).
CopyIndicator []IndicatorType `json:"CopyIndicator,omitempty"`
// Text describing the referenced document.
DocumentDescription []TextType `json:"DocumentDescription,omitempty"`
// A code signifying the status of the reference document with respect to its original state.
DocumentStatusCode []CodeType `json:"DocumentStatusCode,omitempty"`
// The type of document being referenced, expressed as text.
DocumentType []TextType `json:"DocumentType,omitempty"`
// The type of document being referenced, expressed as a code.
DocumentTypeCode []CodeType `json:"DocumentTypeCode,omitempty"`
// An identifier for the referenced document.
ID []IdentifierType `json:"ID"`
// The date, assigned by the sender of the referenced document, on which the document was
// issued.
IssueDate []DateType `json:"IssueDate,omitempty"`
// The party who issued the referenced document.
IssuerParty []PartyDetails `json:"IssuerParty,omitempty"`
// The time, assigned by the sender of the referenced document, at which the document was
// issued.
IssueTime []TimeType `json:"IssueTime,omitempty"`
// An identifier for the language used in the referenced document.
LanguageID []IdentifierType `json:"LanguageID,omitempty"`
// A code signifying the locale in which the language in the referenced document is used.
LocaleCode []CodeType `json:"LocaleCode,omitempty"`
// The result of an attempt to verify a signature associated with the referenced document.
ResultOfVerification []ResultOfVerificationDetails `json:"ResultOfVerification,omitempty"`
// A universally unique identifier for this document reference.
UUID []IdentifierType `json:"UUID,omitempty"`
// The period for which this document reference is valid.
ValidityPeriod []PeriodDetails `json:"ValidityPeriod,omitempty"`
// An identifier for the current version of the referenced document.
VersionID []IdentifierType `json:"VersionID,omitempty"`
// A reference to another place in the same XML document instance in which DocumentReference
// appears.
XPath []TextType `json:"XPath,omitempty"`
}
// A class to describe a person.
type PersonDetails struct {
// This person's date of birth.
BirthDate []DateType `json:"BirthDate,omitempty"`
// The name of the place where this person was born, expressed as text.
BirthplaceName []TextType `json:"BirthplaceName,omitempty"`
// Contact information for this person.
Contact []ContactDetails `json:"Contact,omitempty"`
// This person's family name.
FamilyName []TextType `json:"FamilyName,omitempty"`
// The financial account associated with this person.
FinancialAccount []FinancialAccountDetails `json:"FinancialAccount,omitempty"`
// This person's given name.
FirstName []TextType `json:"FirstName,omitempty"`
// A code (e.g., ISO 5218) signifying the gender of this person.
GenderCode []CodeType `json:"GenderCode,omitempty"`
// An identifier for this person.
ID []IdentifierType `json:"ID,omitempty"`
// A reference to a document that can precisely identify this person (e.g., a driver's
// license).
IdentityDocumentReference []DocumentReferenceDetails `json:"IdentityDocumentReference,omitempty"`
// This person's job title (for a particular role) within an organization.
JobTitle []TextType `json:"JobTitle,omitempty"`
// This person's middle name(s) or initials.
MiddleName []TextType `json:"MiddleName,omitempty"`
// A suffix to this person's name (e.g., PhD, OBE, Jr).
NameSuffix []TextType `json:"NameSuffix,omitempty"`
// An identifier for this person's nationality.
NationalityID []IdentifierType `json:"NationalityID,omitempty"`
// The department or subdivision of an organization that this person belongs to (in a
// particular role).
OrganizationDepartment []TextType `json:"OrganizationDepartment,omitempty"`
// This person's second family name.
OtherName []TextType `json:"OtherName,omitempty"`
// This person's address of residence.
ResidenceAddress []AddressDetails `json:"ResidenceAddress,omitempty"`
// This person's title of address (e.g., Mr, Ms, Dr, Sir).
Title []TextType `json:"Title,omitempty"`
}
// A class to describe a shareholder party.
type ShareholderPartyDetails struct {
// The shareholder participation, expressed as a percentage.
PartecipationPercent []NumericType `json:"PartecipationPercent,omitempty"`
// The shareholder party.
Party []PartyDetails `json:"Party,omitempty"`
}
// A class to describe a party as a legal entity.
type PartyLegalEntityDetails struct {
// An identifier for the party as registered within a company registration scheme.
CompanyID []IdentifierType `json:"CompanyID,omitempty"`
// The company legal status, expressed as a text.
CompanyLegalForm []TextType `json:"CompanyLegalForm,omitempty"`
// A code signifying the party's legal status.
CompanyLegalFormCode []CodeType `json:"CompanyLegalFormCode,omitempty"`
// A code signifying the party's liquidation status.
CompanyLiquidationStatusCode []CodeType `json:"CompanyLiquidationStatusCode,omitempty"`
// The corporate registration scheme used to register the party.
CorporateRegistrationScheme []CorporateRegistrationSchemeDetails `json:"CorporateRegistrationScheme,omitempty"`
// The number of shares in the capital stock of a corporation.
CorporateStockAmount []AmountType `json:"CorporateStockAmount,omitempty"`
// An indicator that all shares of corporate stock have been paid by shareholders (true) or
// not (false).
FullyPaidSharesIndicator []IndicatorType `json:"FullyPaidSharesIndicator,omitempty"`
// The head office of the legal entity
HeadOfficeParty []PartyDetails `json:"HeadOfficeParty,omitempty"`
// The registered address of the party within a corporate registration scheme.
RegistrationAddress []AddressDetails `json:"RegistrationAddress,omitempty"`
// The registration date of the CompanyID.
RegistrationDate []DateType `json:"RegistrationDate,omitempty"`
// The date upon which a registration expires (e.g., registration for an import/export
// license).
RegistrationExpirationDate []DateType `json:"RegistrationExpirationDate,omitempty"`
// The name of the party as registered with the relevant legal authority.
RegistrationName []TextType `json:"RegistrationName,omitempty"`
// A party owning shares in this legal entity.
ShareholderParty []ShareholderPartyDetails `json:"ShareholderParty,omitempty"`
// An indicator that the company is owned and controlled by one person (true) or not (false).
SoleProprietorshipIndicator []IndicatorType `json:"SoleProprietorshipIndicator,omitempty"`
}
// A class to describe an organization, sub-organization, or individual fulfilling a role in
// a business process.
type PartyDetails struct {
// An indicator that this party is "care of" (c/o) (true) or not (false).
MarkCareIndicator []IndicatorType `json:"MarkCareIndicator,omitempty"`
// An indicator that this party is "for the attention of" (FAO) (true) or not (false).
MarkAttentionIndicator []IndicatorType `json:"MarkAttentionIndicator,omitempty"`
// The Uniform Resource Identifier (URI) that identifies this party's web site; i.e., the
// web site's Uniform Resource Locator (URL).
WebsiteURI []IdentifierType `json:"WebsiteURI,omitempty"`
// An identifier for this party's logo.
LogoReferenceID []IdentifierType `json:"LogoReferenceID,omitempty"`
// An identifier for the end point of the routing service (e.g., EAN Location Number, GLN).
EndpointID []IdentifierType `json:"EndpointID,omitempty"`
// This party's Industry Classification Code.
IndustryClassificationCode []CodeType `json:"IndustryClassificationCode,omitempty"`
// A description of this party as a legal entity.
PartyIdentification []PartyIdentificationDetails `json:"PartyIdentification,omitempty"`
// The primary contact for this party.
PartyName []PartyNameDetails `json:"PartyName,omitempty"`
// The language associated with this party.
Language []LanguageDetails `json:"Language,omitempty"`
// The party's postal address.
PostalAddress []AddressDetails `json:"PostalAddress,omitempty"`
// The physical location of this party.
PhysicalLocation []LocationDetails `json:"PhysicalLocation,omitempty"`
// A tax scheme applying to this party.
PartyTaxScheme []PartyTaxSchemeDetails `json:"PartyTaxScheme,omitempty"`
// An identifier for this party.
PartyLegalEntity []PartyLegalEntityDetails `json:"PartyLegalEntity,omitempty"`
// A name for this party.
Contact []ContactDetails `json:"Contact,omitempty"`
// A person associated with this party.
Person []PersonDetails `json:"Person,omitempty"`
// A party who acts as an agent for this party.
AgentParty []PartyDetails `json:"AgentParty,omitempty"`
// A party providing a service to this party.
ServiceProviderParty []ServiceProviderPartyDetails `json:"ServiceProviderParty,omitempty"`
// A power of attorney associated with this party.
PowerOfAttorney []PowerOfAttorneyDetails `json:"PowerOfAttorney,omitempty"`
// The financial account associated with this party.
FinancialAccount []FinancialAccountDetails `json:"FinancialAccount,omitempty"`
}
// One calendar day according the Gregorian calendar.
type DateType struct {
Empty string `json:"_"`
}
// An instance of time that occurs every day.
type TimeType struct {
Empty string `json:"_"`
}
// A class to describe an attached document. An attachment can refer to an external document
// or be included with the document being exchanged.
type AttachmentDetails struct {
// A binary large object containing an attached document.
EmbeddedDocumentBinaryObject []BinaryObjectType `json:"EmbeddedDocumentBinaryObject,omitempty"`
// A reference to an attached document that is external to the document(s) being exchanged.
ExternalReference []ExternalReferenceDetails `json:"ExternalReference,omitempty"`
}
// A set of finite-length sequences of binary octets.
type BinaryObjectType struct {
Empty string `json:"_"`
CharacterSetCode string `json:"characterSetCode,omitempty"`
EncodingCode string `json:"encodingCode,omitempty"`
Filename string `json:"filename,omitempty"`
Format string `json:"format,omitempty"`
MIMECode string `json:"mimeCode"`
URI string `json:"uri,omitempty"`
}
// A class to describe an external object, such as a document stored at a remote location.
type ExternalReferenceDetails struct {
// A code signifying the character set of an external document.
CharacterSetCode []CodeType `json:"CharacterSetCode,omitempty"`
// Text describing the external object.
Description []TextType `json:"Description,omitempty"`
// A hash value for the externally stored object.
DocumentHash []TextType `json:"DocumentHash,omitempty"`
// A code signifying the encoding/decoding algorithm used with the external object.
EncodingCode []CodeType `json:"EncodingCode,omitempty"`
// The date on which availability of the resource can no longer be relied upon.
ExpiryDate []DateType `json:"ExpiryDate,omitempty"`
// The time after which availability of the resource can no longer be relied upon.
ExpiryTime []TimeType `json:"ExpiryTime,omitempty"`
// The file name of the external object.
FileName []TextType `json:"FileName,omitempty"`
// A code signifying the format of the external object.
FormatCode []CodeType `json:"FormatCode,omitempty"`
// A hash algorithm used to calculate the hash value of the externally stored object.
HashAlgorithmMethod []TextType `json:"HashAlgorithmMethod,omitempty"`
// A code signifying the mime type of the external object.
MIMECode []CodeType `json:"MimeCode,omitempty"`
// The Uniform Resource Identifier (URI) that identifies the external object as an Internet
// resource.
URI []IdentifierType `json:"URI,omitempty"`
}
// A list of two mutually exclusive Boolean values that express the only possible states of
// a property.
type IndicatorType struct {
Empty bool `json:"_"`
}
// A class to describe a period of time.
type PeriodDetails struct {
// The date on which this period begins.
StartDate []DateType `json:"StartDate,omitempty"`
// The time at which this period begins.
StartTime []TimeType `json:"StartTime,omitempty"`
// The date on which this period ends.
EndDate []DateType `json:"EndDate,omitempty"`
// The time at which this period ends.
EndTime []TimeType `json:"EndTime,omitempty"`
// A description of this period, expressed as text.
Description []TextType `json:"Description,omitempty"`
// A description of this period, expressed as a code.
DescriptionCode []CodeType `json:"DescriptionCode,omitempty"`
// The duration of this period, expressed as an ISO 8601 code.
DurationMeasure []MeasureType `json:"DurationMeasure,omitempty"`
}
// A numeric value determined by measuring an object using a specified unit of measure.
type MeasureType struct {
Empty float64 `json:"_"`
UnitCode string `json:"unitCode"`
UnitCodeListVersionID string `json:"unitCodeListVersionID,omitempty"`
}
// A class to describe a financial account.
type FinancialAccountDetails struct {
// A code signifying the format of this financial account.
AccountFormatCode []CodeType `json:"AccountFormatCode,omitempty"`
// A code signifying the type of this financial account.
AccountTypeCode []CodeType `json:"AccountTypeCode,omitempty"`
// An alias for the name of this financial account, to be used in place of the actual
// account name for security reasons.
AliasName []TextType `json:"AliasName,omitempty"`
// The country in which the holder of the financial account is domiciled.
Country []CountryDetails `json:"Country,omitempty"`
// A code signifying the currency in which this financial account is held.
CurrencyCode []CodeType `json:"CurrencyCode,omitempty"`
// The branch of the financial institution associated with this financial account.
FinancialInstitutionBranch []BranchDetails `json:"FinancialInstitutionBranch,omitempty"`
// The identifier for this financial account; the bank account number.
ID []IdentifierType `json:"ID,omitempty"`
// The name of this financial account.
Name []TextType `json:"Name,omitempty"`
// Free-form text applying to the Payment for the owner of this account.
PaymentNote []TextType `json:"PaymentNote,omitempty"`
}
// A class to describe a country.
type CountryDetails struct {
// A code signifying this country.
IdentificationCode []CodeType `json:"IdentificationCode,omitempty"`
// The name of this country.
Name []TextType `json:"Name,omitempty"`
}
// A class to describe a branch or a division of an organization.
type BranchDetails struct {
// The address of this branch or division.
Address []AddressDetails `json:"Address,omitempty"`
// The financial institution that this branch belongs to (if applicable).
FinancialInstitution []FinancialInstitutionDetails `json:"FinancialInstitution,omitempty"`
// An identifier for this branch or division of an organization.
ID []IdentifierType `json:"ID,omitempty"`
// The name of this branch or division of an organization.
Name []TextType `json:"Name,omitempty"`
}
// A class to define common information related to an address.
type AddressDetails struct {
// An identifier for this address within an agreed scheme of address identifiers.
ID []IdentifierType `json:"ID,omitempty"`
// A mutually agreed code signifying the type of this address.
AddressTypeCode []CodeType `json:"AddressTypeCode,omitempty"`
// A mutually agreed code signifying the format of this address.
AddressFormatCode []CodeType `json:"AddressFormatCode,omitempty"`
// A post office box number registered for postal delivery by a postal service provider.
Postbox []TextType `json:"Postbox,omitempty"`
// An identifiable floor of a building.
Floor []TextType `json:"Floor,omitempty"`
// An identifiable room, suite, or apartment of a building.
Room []TextType `json:"Room,omitempty"`
// The name of the street, road, avenue, way, etc. to which the number of the building is
// attached.
StreetName []TextType `json:"StreetName,omitempty"`
// An additional street name used to further clarify the address.
AdditionalStreetName []TextType `json:"AdditionalStreetName,omitempty"`
// The name of the block (an area surrounded by streets and usually containing several
// buildings) in which this address is located.
BlockName []TextType `json:"BlockName,omitempty"`
// The name of a building.
BuildingName []TextType `json:"BuildingName,omitempty"`
// The number of a building within the street.
BuildingNumber []TextType `json:"BuildingNumber,omitempty"`
// The specific identifable location within a building where mail is delivered.
InhouseMail []TextType `json:"InhouseMail,omitempty"`
// The department of the addressee.
Department []TextType `json:"Department,omitempty"`
// The name, expressed as text, of a person or department in an organization to whose
// attention incoming mail is directed; corresponds to the printed forms "for the attention
// of", "FAO", and ATTN:".
MarkAttention []TextType `json:"MarkAttention,omitempty"`
// The name, expressed as text, of a person or organization at this address into whose care
// incoming mail is entrusted; corresponds to the printed forms "care of" and "c/o".
MarkCare []TextType `json:"MarkCare,omitempty"`
// An identifier (e.g., a parcel number) for the piece of land associated with this address.
PlotIdentification []TextType `json:"PlotIdentification,omitempty"`
// The name of the subdivision of a city, town, or village in which this address is located,
// such as the name of its district or borough.
CitySubdivisionName []TextType `json:"CitySubdivisionName,omitempty"`
// The name of a city, town, or village.
CityName []TextType `json:"CityName,omitempty"`
// The postal identifier for this address according to the relevant national postal service,
// such as a ZIP code or Post Code.
PostalZone []TextType `json:"PostalZone,omitempty"`
// The political or administrative division of a country in which this address is located,
// such as the name of its county, province, or state, expressed as text.
CountrySubentity []TextType `json:"CountrySubentity,omitempty"`
// The political or administrative division of a country in which this address is located,
// such as a county, province, or state, expressed as a code (typically nationally agreed).
CountrySubentityCode []CodeType `json:"CountrySubentityCode,omitempty"`
// The recognized geographic or economic region or group of countries in which this address
// is located.
Region []TextType `json:"Region,omitempty"`
// The district or geographical division of a country or region in which this address is
// located.
District []TextType `json:"District,omitempty"`
// The time zone in which this address is located (as an offset from Universal Coordinated
// Time (UTC)) at the time of exchange.
TimezoneOffset []TextType `json:"TimezoneOffset,omitempty"`
// An unstructured address line.
AddressLine []AddressLineDetails `json:"AddressLine,omitempty"`
// The country in which this address is situated.
Country []CountryDetails `json:"Country,omitempty"`
// The geographical coordinates of this address.
LocationCoordinate []LocationCoordinateDetails `json:"LocationCoordinate,omitempty"`
}
// A class to define an unstructured address line.
type AddressLineDetails struct {
// An address line expressed as unstructured text.
Line []TextType `json:"Line"`
}
// A class for defining a set of geographical coordinates (apparently misnamed).
type LocationCoordinateDetails struct {
// The altitude of the location.
AltitudeMeasure []MeasureType `json:"AltitudeMeasure,omitempty"`
// A code signifying the location system used.
CoordinateSystemCode []CodeType `json:"CoordinateSystemCode,omitempty"`
// The degree component of a latitude measured in degrees and minutes.
LatitudeDegreesMeasure []MeasureType `json:"LatitudeDegreesMeasure,omitempty"`
// A code signifying the direction of latitude measurement from the equator (north or south).
LatitudeDirectionCode []CodeType `json:"LatitudeDirectionCode,omitempty"`
// The minutes component of a latitude measured in degrees and minutes (modulo 60).
LatitudeMinutesMeasure []MeasureType `json:"LatitudeMinutesMeasure,omitempty"`
// The degree component of a longitude measured in degrees and minutes.
LongitudeDegreesMeasure []MeasureType `json:"LongitudeDegreesMeasure,omitempty"`
// A code signifying the direction of longitude measurement from the prime meridian (east or
// west).
LongitudeDirectionCode []CodeType `json:"LongitudeDirectionCode,omitempty"`
// The minutes component of a longitude measured in degrees and minutes (modulo 60).
LongitudeMinutesMeasure []MeasureType `json:"LongitudeMinutesMeasure,omitempty"`
}
// A class to describe a financial institution.
type FinancialInstitutionDetails struct {
// The address of this financial institution.
Address []AddressDetails `json:"Address,omitempty"`
// An identifier for this financial institution. It is recommended that the ISO 9362 Bank
// Identification Code (BIC) be used as the ID.
ID []IdentifierType `json:"ID,omitempty"`
// The name of this financial institution.
Name []TextType `json:"Name,omitempty"`
}
// Numeric information that is assigned or is determined by calculation, counting, or
// sequencing and is expressed as a percentage. It does not require a unit of quantity or
// unit of measure.
//
// Numeric information that is assigned or is determined by calculation, counting, or
// sequencing. It does not require a unit of quantity or unit of measure.
//
// A numeric expression of a rate that is assigned or is determined by calculation,
// counting, or sequencing. It does not require a unit of quantity or unit of measure.
type NumericType struct {
Empty float64 `json:"_"`
Format string `json:"format,omitempty"`
}
// A class to describe a scheme for corporate registration.
type CorporateRegistrationSchemeDetails struct {
// A code signifying the type of this registration scheme.
CorporateRegistrationTypeCode []CodeType `json:"CorporateRegistrationTypeCode,omitempty"`
// An identifier for this registration scheme.
ID []IdentifierType `json:"ID,omitempty"`
// A geographic area in which this registration scheme applies.
JurisdictionRegionAddress []AddressDetails `json:"JurisdictionRegionAddress,omitempty"`
// The name of this registration scheme.
Name []TextType `json:"Name,omitempty"`
}
// A number of monetary units specified using a given unit of currency.
type AmountType struct {
Empty float64 `json:"_"`
CurrencyCodeListVersionID string `json:"currencyCodeListVersionID,omitempty"`
CurrencyID string `json:"currencyID"`
}
// A class to describe a language.
type LanguageDetails struct {
// An identifier for this language.
ID []IdentifierType `json:"ID,omitempty"`
// A code signifying the locale in which this language is used.
LocaleCode []CodeType `json:"LocaleCode,omitempty"`
// The name of this language.
Name []TextType `json:"Name,omitempty"`
}
// A class to define an identifier for a party.
type PartyIdentificationDetails struct {
// An identifier for the party.
ID []IdentifierType `json:"ID"`
}
// A class for defining the name of a party.
type PartyNameDetails struct {
// The name of the party.
Name []TextType `json:"Name"`
}
// A class to describe a taxation scheme applying to a party.
type PartyTaxSchemeDetails struct {
// An identifier for the party assigned for tax purposes by the taxation authority.
CompanyID []IdentifierType `json:"CompanyID,omitempty"`
// A reason for the party's exemption from tax, expressed as text.
ExemptionReason []TextType `json:"ExemptionReason,omitempty"`
// A reason for the party's exemption from tax, expressed as a code.
ExemptionReasonCode []CodeType `json:"ExemptionReasonCode,omitempty"`
// The address of the party as registered for tax purposes.
RegistrationAddress []AddressDetails `json:"RegistrationAddress,omitempty"`
// The name of the party as registered with the relevant fiscal authority.
RegistrationName []TextType `json:"RegistrationName,omitempty"`
// A code signifying the tax level applicable to the party within this taxation scheme.
TaxLevelCode []CodeType `json:"TaxLevelCode,omitempty"`
// The taxation scheme applicable to the party.
TaxScheme []TaxSchemeDetails `json:"TaxScheme"`
}
// A class to describe a taxation scheme (e.g., VAT, State tax, County tax).
type TaxSchemeDetails struct {
// A code signifying the currency in which the tax is collected and reported.
CurrencyCode []CodeType `json:"CurrencyCode,omitempty"`
// An identifier for this taxation scheme.
ID []IdentifierType `json:"ID,omitempty"`
// A geographic area in which this taxation scheme applies.
JurisdictionRegionAddress []AddressDetails `json:"JurisdictionRegionAddress,omitempty"`
// The name of this taxation scheme.
Name []TextType `json:"Name,omitempty"`
// A code signifying the type of tax.
TaxTypeCode []CodeType `json:"TaxTypeCode,omitempty"`
}
// A class to describe a location.
type LocationDetails struct {
// The address of this location.
Address []AddressDetails `json:"Address,omitempty"`
// Free-form text describing the physical conditions of the location.
Conditions []TextType `json:"Conditions,omitempty"`
// A territorial division of a country, such as a county or state, expressed as text.
CountrySubentity []TextType `json:"CountrySubentity,omitempty"`
// A territorial division of a country, such as a county or state, expressed as a code.
CountrySubentityCode []CodeType `json:"CountrySubentityCode,omitempty"`
// Text describing this location.
Description []TextType `json:"Description,omitempty"`
// An identifier for this location, e.g., the EAN Location Number, GLN.
ID []IdentifierType `json:"ID,omitempty"`
// The Uniform Resource Identifier (URI) of a document providing information about this
// location.
InformationURI []IdentifierType `json:"InformationURI,omitempty"`
// The geographical coordinates of this location.
LocationCoordinate []LocationCoordinateDetails `json:"LocationCoordinate,omitempty"`
// A code signifying the type of location.
LocationTypeCode []CodeType `json:"LocationTypeCode,omitempty"`
// The name of this location.
Name []TextType `json:"Name,omitempty"`
// A location subsidiary to this location.
SubsidiaryLocation []LocationDetails `json:"SubsidiaryLocation,omitempty"`
// A period during which this location can be used (e.g., for delivery).
ValidityPeriod []PeriodDetails `json:"ValidityPeriod,omitempty"`
}
// A class to describe a supplier party.
type SupplierPartyDetails struct {
// An identifier for this supplier party, assigned by the customer.
CustomerAssignedAccountID []IdentifierType `json:"CustomerAssignedAccountID,omitempty"`
// An additional identifier for this supplier party.
AdditionalAccountID []IdentifierType `json:"AdditionalAccountID,omitempty"`
// Text describing the supplier's ability to send invoice data via a purchase card provider
// (e.g., VISA, MasterCard, American Express).
DataSendingCapability []TextType `json:"DataSendingCapability,omitempty"`
// The supplier party itself.
Party []PartyDetails `json:"Party,omitempty"`
// A contact at this supplier party for despatches (pickups).
DespatchContact []ContactDetails `json:"DespatchContact,omitempty"`
// A contact at this supplier party for accounting.
AccountingContact []ContactDetails `json:"AccountingContact,omitempty"`
// The primary contact for this supplier party.
SellerContact []ContactDetails `json:"SellerContact,omitempty"`
}
// A class to describe information about a charge or discount as applied to a price
// component.
type AllowanceChargeDetails struct {
// The accounting cost centre used by the buyer to account for this allowance or charge,
// expressed as text.
AccountingCost []TextType `json:"AccountingCost,omitempty"`
// The accounting cost centre used by the buyer to account for this allowance or charge,
// expressed as a code.
AccountingCostCode []CodeType `json:"AccountingCostCode,omitempty"`
// The reason for this allowance or charge.
AllowanceChargeReason []TextType `json:"AllowanceChargeReason,omitempty"`
// A mutually agreed code signifying the reason for this allowance or charge.
AllowanceChargeReasonCode []CodeType `json:"AllowanceChargeReasonCode,omitempty"`
// The monetary amount of this allowance or charge to be applied.
Amount []AmountType `json:"Amount"`
// The monetary amount to which the multiplier factor is applied in calculating the amount
// of this allowance or charge.
BaseAmount []AmountType `json:"BaseAmount,omitempty"`
// An indicator that this AllowanceCharge describes a charge (true) or a discount (false).
ChargeIndicator []IndicatorType `json:"ChargeIndicator"`
// An identifier for this allowance or charge.
ID []IdentifierType `json:"ID,omitempty"`
// A number by which the base amount is multiplied to calculate the actual amount of this
// allowance or charge.
MultiplierFactorNumeric []NumericType `json:"MultiplierFactorNumeric,omitempty"`
// A means of payment for this allowance or charge.
PaymentMeans []PaymentMeansDetails `json:"PaymentMeans,omitempty"`
// The allowance or charge per item; the total allowance or charge is calculated by
// multiplying the per unit amount by the quantity of items, either at the level of the
// individual transaction line or for the total number of items in the document, depending
// on the context in which it appears.
PerUnitAmount []AmountType `json:"PerUnitAmount,omitempty"`
// An indicator that this allowance or charge is prepaid (true) or not (false).
PrepaidIndicator []IndicatorType `json:"PrepaidIndicator,omitempty"`
// A number indicating the order of this allowance or charge in the sequence of calculations
// applied when there are multiple allowances or charges.
SequenceNumeric []NumericType `json:"SequenceNumeric,omitempty"`
// A tax category applicable to this allowance or charge.
TaxCategory []TaxCategoryDetails `json:"TaxCategory,omitempty"`
// The total of all the taxes applicable to this allowance or charge.
TaxTotal []TaxTotalDetails `json:"TaxTotal,omitempty"`
}
// A class to describe a means of payment.
type PaymentMeansDetails struct {
// A credit card, debit card, or charge card account that constitutes this means of payment.
CardAccount []CardAccountDetails `json:"CardAccount,omitempty"`
// A credit account associated with this means of payment.
CreditAccount []CreditAccountDetails `json:"CreditAccount,omitempty"`
// An identifier for this means of payment.
ID []IdentifierType `json:"ID,omitempty"`
// An identifier for the payment instruction.
InstructionID []IdentifierType `json:"InstructionID,omitempty"`
// Free-form text conveying information that is not contained explicitly in other structures.
InstructionNote []TextType `json:"InstructionNote,omitempty"`
// The payee's financial account.
PayeeFinancialAccount []FinancialAccountDetails `json:"PayeeFinancialAccount,omitempty"`
// The payer's financial account.
PayerFinancialAccount []FinancialAccountDetails `json:"PayerFinancialAccount,omitempty"`
// A code signifying the payment channel for this means of payment.
PaymentChannelCode []CodeType `json:"PaymentChannelCode,omitempty"`
// The date on which payment is due for this means of payment.
PaymentDueDate []DateType `json:"PaymentDueDate,omitempty"`
// An identifier for a payment made using this means of payment.
PaymentID []IdentifierType `json:"PaymentID,omitempty"`
// The payment mandate associated with this means of payment.
PaymentMandate []PaymentMandateDetails `json:"PaymentMandate,omitempty"`
// A code signifying the type of this means of payment.
PaymentMeansCode []CodeType `json:"PaymentMeansCode"`
// A trade finance agreement applicable to this means of payment.
TradeFinancing []TradeFinancingDetails `json:"TradeFinancing,omitempty"`
}
// A class to define a credit card, debit card, or charge card account.
type CardAccountDetails struct {
// A mutually agreed code to distinguish between CHIP and MAG STRIPE cards.
CardChipCode []CodeType `json:"CardChipCode,omitempty"`
// A mutually agreed code signifying the type of card. Examples of types are "debit",
// "credit" and "purchasing"
CardTypeCode []CodeType `json:"CardTypeCode,omitempty"`
// An identifier on the chip card for the application that provides the quoted information;
// an AID (application ID).
ChipApplicationID []IdentifierType `json:"ChipApplicationID,omitempty"`
// An identifier for the Card Verification Value (often found on the reverse of the card
// itself).
Cv2ID []IdentifierType `json:"CV2ID,omitempty"`
// The date on which the card expires.
ExpiryDate []DateType `json:"ExpiryDate,omitempty"`
// The name of the cardholder.
HolderName []TextType `json:"HolderName,omitempty"`
// An identifier for the card, specified by the issuer.
IssueNumberID []IdentifierType `json:"IssueNumberID,omitempty"`
// An identifier for the institution issuing the card.
IssuerID []IdentifierType `json:"IssuerID,omitempty"`
// An identifier for the financial service network provider of the card.
NetworkID []IdentifierType `json:"NetworkID"`
// An identifier of the card (e.g., the Primary Account Number (PAN)).
PrimaryAccountNumberID []IdentifierType `json:"PrimaryAccountNumberID"`
// The date from which the card is valid.
ValidityStartDate []DateType `json:"ValidityStartDate,omitempty"`
}
// A class to identify a credit account for sales on account.
type CreditAccountDetails struct {
// An identifier for this credit account.
AccountID []IdentifierType `json:"AccountID"`
}
// A class to describe a payment mandate.
type PaymentMandateDetails struct {
// A clause applicable to this payment mandate.
Clause []ClauseDetails `json:"Clause,omitempty"`
// An identifier for this payment mandate.
ID []IdentifierType `json:"ID,omitempty"`
// A code signifying the type of this payment mandate.
MandateTypeCode []CodeType `json:"MandateTypeCode,omitempty"`
// The maximum amount to be paid within a single instruction.
MaximumPaidAmount []AmountType `json:"MaximumPaidAmount,omitempty"`
// The number of maximum payment instructions allowed within the validity period.
MaximumPaymentInstructionsNumeric []NumericType `json:"MaximumPaymentInstructionsNumeric,omitempty"`
// The payer's financial account.
PayerFinancialAccount []FinancialAccountDetails `json:"PayerFinancialAccount,omitempty"`
// The payer party (if different from the debtor).
PayerParty []PartyDetails `json:"PayerParty,omitempty"`
// The period of the reverse payment.
PaymentReversalPeriod []PeriodDetails `json:"PaymentReversalPeriod,omitempty"`
// An identifier for a signature applied by a signatory party.
SignatureID []IdentifierType `json:"SignatureID,omitempty"`
// The period during which this mandate is valid.
ValidityPeriod []PeriodDetails `json:"ValidityPeriod,omitempty"`
}
// A class to define a clause (a distinct article or provision) in a contract, treaty, will,
// or other formal or legal written document requiring compliance.
type ClauseDetails struct {
// The text of this clause.
Content []TextType `json:"Content,omitempty"`
// An identifier for this clause.
ID []IdentifierType `json:"ID,omitempty"`
}
// A class to describe a trade financing instrument.
type TradeFinancingDetails struct {
// A clause applicable to this trade financing instrument.
Clause []ClauseDetails `json:"Clause,omitempty"`
// A reference to a contract document.
ContractDocumentReference []DocumentReferenceDetails `json:"ContractDocumentReference,omitempty"`
// A reference to a document associated with this trade financing instrument.
DocumentReference []DocumentReferenceDetails `json:"DocumentReference,omitempty"`
// An internal bank account used by the bank or its first agent to manage the line of credit
// granted to the financing requester.
FinancingFinancialAccount []FinancialAccountDetails `json:"FinancingFinancialAccount,omitempty"`
// A code signifying the type of this financing instrument.
FinancingInstrumentCode []CodeType `json:"FinancingInstrumentCode,omitempty"`
// The financing party (bank or other enabled party).
FinancingParty []PartyDetails `json:"FinancingParty"`
// An identifier for this trade financing instrument.
ID []IdentifierType `json:"ID,omitempty"`
}
// A class to describe one of the tax categories within a taxation scheme (e.g., High Rate
// VAT, Low Rate VAT).
type TaxCategoryDetails struct {
// A Unit of Measures used as the basic for the tax calculation applied at a certain rate
// per unit.
BaseUnitMeasure []MeasureType `json:"BaseUnitMeasure,omitempty"`
// An identifier for this tax category.
ID []IdentifierType `json:"ID,omitempty"`
// The name of this tax category.
Name []TextType `json:"Name,omitempty"`
// The tax rate for this category, expressed as a percentage.
Percent []NumericType `json:"Percent,omitempty"`
// Where a tax is applied at a certain rate per unit, the rate per unit applied.
PerUnitAmount []AmountType `json:"PerUnitAmount,omitempty"`
// The reason for tax being exempted, expressed as text.
TaxExemptionReason []TextType `json:"TaxExemptionReason,omitempty"`
// The reason for tax being exempted, expressed as a code.
TaxExemptionReasonCode []CodeType `json:"TaxExemptionReasonCode,omitempty"`
// The taxation scheme within which this tax category is defined.
TaxScheme []TaxSchemeDetails `json:"TaxScheme"`
// Where a tax is tiered, the range of taxable amounts that determines the rate of tax
// applicable to this tax category.
TierRange []TextType `json:"TierRange,omitempty"`
// Where a tax is tiered, the tax rate that applies within the specified range of taxable
// amounts for this tax category.
TierRatePercent []NumericType `json:"TierRatePercent,omitempty"`
}
// A class to describe the total tax for a particular taxation scheme.
type TaxTotalDetails struct {
// The rounding amount (positive or negative) added to the calculated tax total to produce
// the rounded TaxAmount.
RoundingAmount []AmountType `json:"RoundingAmount,omitempty"`
// The total tax amount for a particular taxation scheme, e.g., VAT; the sum of the tax
// subtotals for each tax category within the taxation scheme.
TaxAmount []AmountType `json:"TaxAmount"`
// An indicator that this total is recognized as legal evidence for taxation purposes (true)
// or not (false).
TaxEvidenceIndicator []IndicatorType `json:"TaxEvidenceIndicator,omitempty"`
// An indicator that tax is included in the calculation (true) or not (false).
TaxIncludedIndicator []IndicatorType `json:"TaxIncludedIndicator,omitempty"`
// One of the subtotals the sum of which equals the total tax amount for a particular
// taxation scheme.
TaxSubtotal []TaxSubtotalDetails `json:"TaxSubtotal,omitempty"`
}
// A class to define the subtotal for a particular tax category within a particular taxation
// scheme, such as standard rate within VAT.
type TaxSubtotalDetails struct {
// The unit of measure on which the tax calculation is based
BaseUnitMeasure []MeasureType `json:"BaseUnitMeasure,omitempty"`
// The number of this tax subtotal in the sequence of subtotals corresponding to the order
// in which multiple taxes are applied. If all taxes are applied to the same taxable amount
// (i.e., their order of application is inconsequential), then CalculationSequenceNumeric is
// 1 for all tax subtotals applied to a given amount.
CalculationSequenceNumeric []NumericType `json:"CalculationSequenceNumeric,omitempty"`
// The tax rate of the tax category applied to this tax subtotal, expressed as a percentage.
Percent []NumericType `json:"Percent,omitempty"`
// Where a tax is applied at a certain rate per unit, the rate per unit applied.
PerUnitAmount []AmountType `json:"PerUnitAmount,omitempty"`
// The net amount to which the tax percent (rate) is applied to calculate the tax amount.
TaxableAmount []AmountType `json:"TaxableAmount,omitempty"`
// The amount of this tax subtotal.
TaxAmount []AmountType `json:"TaxAmount"`
// The tax category applicable to this subtotal.
TaxCategory []TaxCategoryDetails `json:"TaxCategory"`
// Where a tax is tiered, the range of taxable amounts that determines the rate of tax
// applicable to this tax subtotal.
TierRange []TextType `json:"TierRange,omitempty"`
// Where a tax is tiered, the tax rate that applies within a specified range of taxable
// amounts for this tax subtotal.
TierRatePercent []NumericType `json:"TierRatePercent,omitempty"`
// The amount of this tax subtotal, expressed in the currency used for invoicing.
TransactionCurrencyTaxAmount []AmountType `json:"TransactionCurrencyTaxAmount,omitempty"`
}
// A class to define a reference to a billing document.
type BillingReferenceDetails struct {
// A reference to an additional document.
AdditionalDocumentReference []DocumentReferenceDetails `json:"AdditionalDocumentReference,omitempty"`
// A reference to a transaction line in the billing document.
BillingReferenceLine []BillingReferenceLineDetails `json:"BillingReferenceLine,omitempty"`
// A reference to a credit note.
CreditNoteDocumentReference []DocumentReferenceDetails `json:"CreditNoteDocumentReference,omitempty"`
// A reference to a debit note.
DebitNoteDocumentReference []DocumentReferenceDetails `json:"DebitNoteDocumentReference,omitempty"`
// A reference to an invoice.
InvoiceDocumentReference []DocumentReferenceDetails `json:"InvoiceDocumentReference,omitempty"`
// A reference to a billing reminder.
ReminderDocumentReference []DocumentReferenceDetails `json:"ReminderDocumentReference,omitempty"`
// A reference to a self billed credit note.
SelfBilledCreditNoteDocumentReference []DocumentReferenceDetails `json:"SelfBilledCreditNoteDocumentReference,omitempty"`
// A reference to a self billed invoice.
SelfBilledInvoiceDocumentReference []DocumentReferenceDetails `json:"SelfBilledInvoiceDocumentReference,omitempty"`
}
// A class to define a reference to a transaction line in a billing document.
type BillingReferenceLineDetails struct {
// An allowance or charge applicable to the transaction line.
AllowanceCharge []AllowanceChargeDetails `json:"AllowanceCharge,omitempty"`
// The monetary amount of the transaction line, including any allowances and charges but
// excluding taxes.
Amount []AmountType `json:"Amount,omitempty"`
// An identifier for this transaction line in a billing document.
ID []IdentifierType `json:"ID"`
}
// A class to define a line in a Credit Note or Self Billed Credit Note.
type CreditNoteLineDetails struct {
// The buyer's accounting cost centre for this credit note line, expressed as text.
AccountingCost []TextType `json:"AccountingCost,omitempty"`
// The buyer's accounting cost centre for this credit note line, expressed as a code.
AccountingCostCode []CodeType `json:"AccountingCostCode,omitempty"`
// An allowance or charge associated with this credit note.
AllowanceCharge []AllowanceChargeDetails `json:"AllowanceCharge,omitempty"`
// A reference to a billing document associated with this credit note line.
BillingReference []BillingReferenceDetails `json:"BillingReference,omitempty"`
// The quantity of items credited in this credit note line.
CreditedQuantity []QuantityType `json:"CreditedQuantity,omitempty"`
// A delivery associated with this credit note line.
Delivery []DeliveryDetails `json:"Delivery,omitempty"`
// Terms and conditions of a delivery associated with this credit note line.
DeliveryTerms []DeliveryTermsDetails `json:"DeliveryTerms,omitempty"`
// A reference to a despatch line associated with this credit note line.
DespatchLineReference []LineReferenceDetails `json:"DespatchLineReference,omitempty"`
// A reason for the credit.
DiscrepancyResponse []ResponseDetails `json:"DiscrepancyResponse,omitempty"`
// A reference to a document associated with this credit note line.
DocumentReference []DocumentReferenceDetails `json:"DocumentReference,omitempty"`
// An indicator that this credit note line is free of charge (true) or not (false). The
// default is false.
FreeOfChargeIndicator []IndicatorType `json:"FreeOfChargeIndicator,omitempty"`
// An identifier for this credit note line.
ID []IdentifierType `json:"ID"`
// An invoice period to which this credit note line applies.
InvoicePeriod []PeriodDetails `json:"InvoicePeriod,omitempty"`
// The item associated with this credit note line.
Item []ItemDetails `json:"Item,omitempty"`
// The price extension, calculated by multiplying the price per unit by the quantity of