generated: '2026-09-17' method: derived source: components.schemas $ref graph and *ID/*fingerprint reference fields of openapi/bancomat-flowpay-api-v2-openapi.yml and openapi/bancomat-flowpay-api-v1-openapi.yml; docs/invoice_lifecycle.md, bulk_lifecycle.md, chain_lifecycle.md, fee_description.md in github.com/FlowPay/client-openapi note: FlowPay (a BANCOMAT company) data model. Every payable thing is a "document" identified by a content fingerprint (invoice, proforma, credit note, bill/ricevuta, salary, transfer, pagoPA notice, bulk, chain); a checkout wraps one document into a hosted payment session; payments and transactions are observed through AIS on tenant bank accounts. v1 schemas are Italian-named DTOs, v2 English — both are listed with their api tag. id_conventions: tenantID: UUID of the company/person owning the data (v1 path prefix, v2 token-derived) fingerprint: content hash identifying a document (MD5-shaped in examples) code: checkout code (checkout URL slug) identifier: UUID of a payment (webhook payloads) or construction contract/site requestID / correlationId: server-side error correlation id flowpayID: v1 bank identifier; v2 uses banks/{id} domains: - name: Identity & consent entities: - Account - Accounts - AIS-Session - AisConsentType - ConsentDTO - ConsentType - Bank - BankInfo - Banks - BankAccount - name: Documents entities: - Invoice - Invoices - NewInvoice - EditInvoiceRequest - InvoicePreference - Item - NewItem - NewTerm - EditTerm - Dossier - DossierDocument - DossierInput - LinkedDocument - DocumentKindEnum - DocumentType - Bulk - Chain - Fingerprint - name: Payments entities: - Payment - PaymentDTO - Payments - PaymentMethodInfo - PaymentStatusEnum - CheckoutRequest - CheckoutResponse - GetCheckoutResponse - CheckoutPreferences - GetSCAResponse - FeeBearer - ExecutionRule - PlanType - FrequencyEnum - name: Bank data entities: - Balance - Balances - LatestBalances - Transaction - Transactions - Categorization - Categorizations - name: Errors & webhooks entities: - ErrorDTO - PostWebHook - WebHookTypes entities: - name: Address api: v2 fields: 7 type: object - name: Bank api: v2 fields: 6 type: object - name: BankAccount api: v2 fields: 6 type: object - name: Bulk api: v2 fields: 4 type: object - name: Chain api: v2 fields: 5 type: object - name: Checkout api: v2 fields: 7 type: object - name: ConsentStatusEnum api: v2 fields: 0 type: string - name: CollectionMethodEnum api: v2 fields: 0 type: string - name: CompanyVATNumber api: v2 fields: 0 type: string - name: ConstructionProgress api: v2 fields: 5 type: object - name: ConstructionSite api: v2 fields: 5 type: object - name: ConsumerNationalID api: v2 fields: 0 type: string - name: Contact api: v2 fields: 3 type: object - name: DocumentKindEnum api: v2 fields: 0 type: string - name: Fee api: v2 fields: 6 type: object - name: FeeRule api: v2 fields: 9 type: object - name: FeeRuleMap api: v2 fields: 0 type: object - name: FeeRuleAmountMap api: v2 fields: 0 type: object - name: FeeRuleMethods api: v2 fields: 0 type: string - name: FeeRulePayer api: v2 fields: 0 type: string - name: Fingerprint api: v2 fields: 0 type: string - name: Invoice api: v2 fields: 14 type: object - name: KYCBankAccountDossier api: v2 fields: 4 type: object - name: KYCCompanyDossier api: v2 fields: 8 type: object - name: KYCConsumerDossier api: v2 fields: 12 type: object - name: KYCDossier api: v2 fields: 8 type: object - name: KYCFlow api: v2 fields: 0 type: string - name: DocumentAttachment api: v2 fields: 3 type: object - name: DocumentItem api: v2 fields: 6 type: object - name: DocumentTerm api: v2 fields: 5 type: object - name: PaginatedResult api: v2 fields: 4 type: object - name: pagoPA api: v2 fields: 6 type: object - name: pagoPAStatus api: v2 fields: 0 type: string - name: Payment api: v2 fields: 9 type: object - name: PaymentStatusEnum api: v2 fields: 0 type: string - name: RequestID api: v2 fields: 0 type: string - name: SiteQuote api: v2 fields: 8 type: object - name: SiteWorkerContractCreation api: v2 fields: 3 type: object - name: SiteWorkerContract api: v2 fields: 4 type: object - name: StatusCode api: v2 fields: 0 type: integer - name: Transaction api: v2 fields: 10 type: object - name: Transfer api: v2 fields: 7 type: object - name: Account api: v1 fields: 8 type: object - name: Accounts api: v1 fields: 0 type: array - name: AIS-Session api: v1 fields: 2 type: object - name: AdditionalData api: v1 fields: 3 type: object - name: AisConsentType api: v1 fields: 0 type: string - name: Array api: v1 fields: 0 type: array - name: Attachment api: v1 fields: 4 type: object - name: Balance api: v1 fields: 5 type: object - name: Balances api: v1 fields: 0 type: object - name: Bank api: v1 fields: 9 type: object - name: BankInfo api: v1 fields: 7 type: object - name: Banks api: v1 fields: 0 type: array - name: Bulk api: v1 fields: 3 type: object - name: ConsentDTO api: v1 fields: 7 type: object - name: ConsentType api: v1 fields: 0 type: string - name: Categorization api: v1 fields: 6 type: object - name: Categorizations api: v1 fields: 0 type: array - name: Chain api: v1 fields: 5 type: object - name: CheckoutRequest api: v1 fields: 4 type: object - name: CheckoutResponse api: v1 fields: 3 type: object - name: CollectionMethodEnum api: v1 fields: 0 type: string - name: CheckoutPreferences api: v1 fields: 6 type: object - name: CheckoutPreferencesResponse api: v1 fields: 3 type: object - name: CompanyVATNumber api: v1 fields: 0 type: string - name: Contact api: v1 fields: 11 type: object - name: CountryCode api: v1 fields: 0 type: string - name: CreateAisSessionRequest api: v1 fields: 7 type: object - name: Detail api: v1 fields: 6 type: object - name: DocumentKindEnum api: v1 fields: 0 type: string - name: DocumentType api: v1 fields: 0 type: string - name: Dossier api: v1 fields: 12 type: object - name: DossierDocument api: v1 fields: 5 type: object - name: DossierInput api: v1 fields: 2 type: object - name: EditInvoiceRequest api: v1 fields: 3 type: object - name: EditTerm api: v1 fields: 7 type: object - name: ErrorDTO api: v1 fields: 8 type: object - name: ExecutionRule api: v1 fields: 0 type: string - name: FeeBearer api: v1 fields: 0 type: string - name: Fingerprint api: v1 fields: 0 type: string - name: FrequencyEnum api: v1 fields: 0 type: string - name: GetCheckoutResponse api: v1 fields: 2 type: object - name: GetSCAResponse api: v1 fields: 2 type: object - name: Invoice api: v1 fields: 15 type: object - name: InvoicePreference api: v1 fields: 3 type: object - name: Invoices api: v1 fields: 0 type: array - name: Item api: v1 fields: 4 type: object - name: LatestBalances api: v1 fields: 0 type: object - name: LinkedDocument api: v1 fields: 2 type: object - name: NewInvoice api: v1 fields: 10 type: object - name: NewItem api: v1 fields: 3 type: object - name: NewTerm api: v1 fields: 6 type: object - name: PaidOutsideFlowPayTerm api: v1 fields: 0 type: array - name: PaidOutsideFlowPayTermList api: v1 fields: 0 type: array - name: Payment api: v1 fields: 9 type: object - name: PaymentDTO api: v1 fields: 10 type: object - name: PaymentMethodInfo api: v1 fields: 0 type: string - name: PaymentStatusEnum api: v1 fields: 0 type: string - name: Payments api: v1 fields: 0 type: array - name: PlanType api: v1 fields: 0 type: object - name: PostWebHook api: v1 fields: 3 type: object - name: PreferenceAccount api: v1 fields: 3 type: object - name: PutWebHook api: v1 fields: 2 type: object - name: RecurringInfo api: v1 fields: 3 type: object - name: SCAFee api: v1 fields: 3 type: object - name: SalaryBatchUpdate api: v1 fields: 0 type: object - name: SalaryEmployee api: v1 fields: 3 type: object - name: SalaryResponse api: v1 fields: 12 type: object - name: SalaryResponseTemp api: v1 fields: 9 type: object - name: SalaryUpdate api: v1 fields: 3 type: object - name: Term api: v1 fields: 9 type: object - name: Transaction api: v1 fields: 14 type: object - name: TransactionCategorization api: v1 fields: 6 type: object - name: Transactions api: v1 fields: 0 type: array - name: Transfer api: v1 fields: 3 type: object - name: UpdateBusiness api: v1 fields: 5 type: object - name: VerificationResult api: v1 fields: 0 type: string - name: WalletInput api: v1 fields: 3 type: object - name: WalletProvider api: v1 fields: 0 type: string - name: WebHook api: v1 fields: 3 type: object - name: WebHookDeleteRequest api: v1 fields: 1 type: object - name: WebHookDetail api: v1 fields: 5 type: object - name: WebHookType api: v1 fields: 5 type: object - name: WebHookTypes api: v1 fields: 0 type: array - name: WebHooks api: v1 fields: 0 type: array - name: XML api: v1 fields: 0 type: object - name: check-iban api: v1 fields: 1 type: object - name: pagoPaStatusEnum api: v1 fields: 0 type: string - name: pagoPA api: v1 fields: 8 type: object - name: pagoPAFieldLess api: v1 fields: 5 type: object relationships: - from: BankAccount to: ConsentStatusEnum kind: has_one via: consentStatus api: v2 - from: Bulk to: Fingerprint kind: has_one via: fingerprint api: v2 - from: Bulk to: Fingerprint kind: has_one via: documents api: v2 - from: Chain to: Fingerprint kind: has_one via: fingerprint api: v2 - from: Chain to: DocumentKindEnum kind: has_one via: targetType api: v2 - from: Chain to: Fingerprint kind: has_one via: targetFingerprint api: v2 - from: Chain to: DocumentKindEnum kind: has_one via: triggerType api: v2 - from: Chain to: Fingerprint kind: has_one via: triggerFingerprint api: v2 - from: Checkout to: Fingerprint kind: has_one via: fingerprint api: v2 - from: Checkout to: DocumentKindEnum kind: has_one via: type api: v2 - from: Checkout to: CollectionMethodEnum kind: has_many via: collectionMethods api: v2 - from: Checkout to: Payment kind: has_many via: payments api: v2 - from: ConstructionProgress to: Fingerprint kind: has_one via: invoices api: v2 - from: ConstructionSite to: Address kind: has_one via: address api: v2 - from: ConstructionSite to: Fingerprint kind: has_one via: initialCreditFingerprint api: v2 - from: Contact to: ConsumerNationalID kind: has_one via: fullVat api: v2 - from: Contact to: CompanyVATNumber kind: has_one via: fullVat api: v2 - from: Fee to: Fingerprint kind: has_one via: fingerprint api: v2 - from: Fee to: Fingerprint kind: has_one via: targetFingerprint api: v2 - from: Fee to: DocumentKindEnum kind: has_one via: targetType api: v2 - from: Fee to: Fingerprint kind: has_one via: linkedFingerprint api: v2 - from: FeeRule to: DocumentKindEnum kind: has_one via: useCase api: v2 - from: FeeRule to: FeeRuleMethods kind: has_one via: method api: v2 - from: FeeRule to: FeeRulePayer kind: has_one via: payer api: v2 - from: Invoice to: DocumentAttachment kind: has_many via: attachments api: v2 - from: Invoice to: DocumentItem kind: has_many via: items api: v2 - from: Invoice to: DocumentTerm kind: has_many via: terms api: v2 - from: Invoice to: Fingerprint kind: has_one via: invoice api: v2 - from: Invoice to: Fingerprint kind: has_one via: proforma api: v2 - from: Invoice to: Fingerprint kind: has_many via: creditNotes api: v2 - from: KYCCompanyDossier to: CompanyVATNumber kind: has_one via: vat api: v2 - from: KYCCompanyDossier to: Address kind: has_one via: address api: v2 - from: KYCCompanyDossier to: KYCBankAccountDossier kind: has_many via: accounts api: v2 - from: KYCConsumerDossier to: ConsumerNationalID kind: has_one via: tin api: v2 - from: KYCConsumerDossier to: Address kind: has_one via: address api: v2 - from: KYCConsumerDossier to: KYCBankAccountDossier kind: has_many via: accounts api: v2 - from: KYCDossier to: KYCFlow kind: has_one via: kind api: v2 - from: KYCDossier to: KYCConsumerDossier kind: has_one via: consumer api: v2 - from: KYCDossier to: KYCCompanyDossier kind: has_one via: company api: v2 - from: pagoPA to: Fingerprint kind: has_one via: fingerprint api: v2 - from: pagoPA to: CompanyVATNumber kind: has_one via: ec api: v2 - from: pagoPA to: Contact kind: has_one via: debtor api: v2 - from: pagoPA to: pagoPAStatus kind: has_one via: status api: v2 - from: Payment to: PaymentStatusEnum kind: has_one via: status api: v2 - from: SiteWorkerContract to: Contact kind: has_one via: company api: v2 - from: Transfer to: Fingerprint kind: has_one via: fingerprint api: v2 - from: Transfer to: Contact kind: has_one via: creditor api: v2 - from: Transfer to: Contact kind: has_one via: debtor api: v2 - from: Account to: Bank kind: belongs_to via: bankID api: v1 inferred: true - from: Bulk to: Fingerprint kind: has_one via: documents api: v1 - from: Bulk to: Fingerprint kind: has_one via: fingerprint api: v1 - from: ConsentDTO to: Bank kind: belongs_to via: bankID api: v1 inferred: true - from: ConsentDTO to: ConsentType kind: has_many via: usableFor api: v1 - from: Categorization to: DocumentType kind: has_one via: documentType api: v1 - from: Categorization to: Transaction kind: belongs_to via: transactionID api: v1 inferred: true - from: Chain to: Fingerprint kind: has_one via: fingerprint api: v1 - from: Chain to: Fingerprint kind: has_one via: targetFingerprint api: v1 - from: Chain to: DocumentKindEnum kind: has_one via: targetType api: v1 - from: Chain to: Fingerprint kind: has_one via: triggerFingerprint api: v1 - from: Chain to: DocumentKindEnum kind: has_one via: triggerType api: v1 - from: CheckoutRequest to: DocumentType kind: has_one via: type api: v1 - from: CheckoutResponse to: PaymentDTO kind: has_many via: payments api: v1 - from: CheckoutPreferences to: CollectionMethodEnum kind: has_many via: allowedMethods api: v1 - from: CheckoutPreferencesResponse to: CollectionMethodEnum kind: has_many via: allowedMethods api: v1 - from: CreateAisSessionRequest to: AisConsentType kind: has_one via: consentType api: v1 - from: Dossier to: DossierDocument kind: has_many via: documents api: v1 - from: EditInvoiceRequest to: EditTerm kind: has_many via: terms api: v1 - from: EditTerm to: ExecutionRule kind: has_one via: recurringinfo api: v1 - from: EditTerm to: FrequencyEnum kind: has_one via: recurringinfo api: v1 - from: GetSCAResponse to: SCAFee kind: has_many via: fees api: v1 - from: Invoice to: Attachment kind: has_many via: attachments api: v1 - from: Invoice to: Item kind: has_many via: items api: v1 - from: Invoice to: Term kind: has_many via: terms api: v1 - from: NewInvoice to: Attachment kind: has_many via: attachments api: v1 - from: NewInvoice to: NewItem kind: has_many via: items api: v1 - from: NewInvoice to: NewTerm kind: has_many via: terms api: v1 - from: NewTerm to: ExecutionRule kind: has_one via: recurringInfo api: v1 - from: NewTerm to: FrequencyEnum kind: has_one via: recurringInfo api: v1 - from: Payment to: PaymentMethodInfo kind: has_one via: method api: v1 - from: Payment to: PaymentStatusEnum kind: has_one via: status api: v1 - from: Payment to: Term kind: belongs_to via: termID api: v1 inferred: true - from: PaymentDTO to: PaymentMethodInfo kind: has_one via: method api: v1 - from: PaymentDTO to: PaymentStatusEnum kind: has_one via: status api: v1 - from: PreferenceAccount to: Bank kind: belongs_to via: bankID api: v1 inferred: true - from: RecurringInfo to: ExecutionRule kind: has_one via: executionRule api: v1 - from: RecurringInfo to: FrequencyEnum kind: has_one via: frequency api: v1 - from: SCAFee to: FeeBearer kind: has_one via: bearer api: v1 - from: SalaryResponse to: SalaryEmployee kind: has_one via: employee api: v1 - from: Term to: ExecutionRule kind: has_one via: recurringInfo api: v1 - from: Term to: FrequencyEnum kind: has_one via: recurringInfo api: v1 - from: TransactionCategorization to: DocumentType kind: has_one via: documentType api: v1 - from: TransactionCategorization to: Transaction kind: belongs_to via: transactionID api: v1 inferred: true - from: Transfer to: Fingerprint kind: has_one via: fingerprint api: v1 - from: WalletInput to: WalletProvider kind: has_one via: provider api: v1 - from: WebHookDetail to: Detail kind: has_one via: events api: v1 - from: check-iban to: VerificationResult kind: has_one via: result api: v1 - from: pagoPA to: CompanyVATNumber kind: has_one via: ec api: v1 - from: pagoPA to: Fingerprint kind: has_one via: fingerprint api: v1 - from: pagoPA to: pagoPaStatusEnum kind: has_one via: status api: v1 - from: pagoPAFieldLess to: CompanyVATNumber kind: has_one via: ec api: v1 - from: pagoPAFieldLess to: Fingerprint kind: has_one via: fingerprint api: v1 lifecycle_relationships: - from: ProformaInvoice to: Invoice kind: replaced_by via: link on invoice issue source: 'invoice_lifecycle.md: "the invoice replaces previously created proforma checkout"' - from: CreditNote to: Invoice kind: belongs_to via: original invoice link source: 'invoice_lifecycle.md: "Linking a credit note to an invoice will automatically update the invoice status and amount due"' - from: Bulk to: Document kind: has_many via: linked documents source: bulk_lifecycle.md; deleting a bulk does not delete linked documents - from: Chain to: Payment kind: has_many via: ordered payments source: chain_lifecycle.md - from: Checkout to: Document kind: belongs_to via: fingerprint + type (invoice|bill) source: v1 webhook payloads checkout_* - from: FeeRule to: Document kind: applies_to via: kind + fingerprint source: v2 GET /fee/rules/{kind}/{fingerprint} render: null entity_count: 131 relationship_count: 101