"$schema": https://json-schema.org/draft/2020-12/schema
title: Bill of Exchange
description: A written order from one party (the drawer) instructing another party (the drawee) to pay a specified sum to a payee on a fixed future date or on demand, used as a trade finance instrument under documentary credit arrangements.
type: object
required:
  - "@context"
  - type
  - credentialSchema
  - issuer
  - credentialSubject
properties:
  "@context":
    type: string
    format: uri
    description: 'Linked Data context for semantic interoperability'
    const: "https://un.opensource.unicc.org/unece/uncefact/spec-unvtd/bill-of-exchange-context.json"
  type:
    type: array
    description: 'Credential types'
    items:
      type: string
      enum:
        - VerifiableCredential
        - BillOfExchange
    minItems: 2
    maxItems: 2
    example:
      - VerifiableCredential
      - BillOfExchange
  credentialSchema:
    type: object
    description: 'Reference to the credential schema for validation'
    properties:
      id:
        type: string
        format: uri
        const: "https://un.opensource.unicc.org/unece/uncefact/spec-unvtd/bill-of-exchange-schema.yaml"
        description: 'Public location of the schema'
      type:
        type: string
        const: "JsonSchema"
        description: 'Schema type identifier'
    required:
      - id
      - type
  id:
    type: string
    format: uri
    description: 'Unique identifier for the credential'
    example: "urn:uuid:boe-2025-001"
  validFrom:
    example: 2025-03-06T10:00:00Z
    type: string
    format: date-time
    description: 'Credential validity start date'
  validTo:
    example: 2026-03-06T10:00:00Z
    type: string
    format: date-time
    description: 'Credential validity end date'
  issuer:
    description: 'Identifier of the party drawing the bill of exchange (e.g., DID)'
    type: string
    format: uri
    example: did:web:surfproexports.example.com
  credentialSubject:
    name: BillOfExchange
    description: 'Bill of exchange details'
    type: object
    required:
      - documentIdentifier
      - issueDate
      - paymentDueDate
      - placeOfIssue
      - issuerDrawer
      - drawee
      - payee
      - guarantor
      - monetaryAmount
      - paymentTerms
      - authentication
      - documentEndorsement
    properties:
      documentIdentifier:
        example: BOE-2025-031-001
        type: string
        description: Reference number identifying a specific document.
      issueDate:
        example: '2025-03-10T00:00:00Z'
        type: string
        format: date-time
        description: Date that a document was issued and when appropriate, signed or otherwise authenticated.
      paymentDueDate:
        example: '2025-06-10T00:00:00Z'
        type: string
        format: date-time
        description: Date when an amount due should be made available to the creditor under the terms of payment.
      placeOfIssue:
        description: Location where a document was issued.
        type: object
        properties:
          city:
            example: Sydney
            type: string
            description: City
          state:
            example: NSW
            type: string
            description: State
          country:
            example: AU
            type: string
            description: Country
      issuerDrawer:
        description: The entity or person who issues the bill of exchange (the drawer).
        type: object
        properties:
          type:
            type: string
            default: Drawer
            enum:
            - Drawer
          id:
            example: did:web:surfproexports.example.com
            type: string
            format: uri
            description: A unique party identifier.
          name:
            example: SurfPro Exports Pty Ltd
            type: string
            description: Trade party name.
          street:
            example: 12 Harbour Drive
            type: string
            description: The street component of the address.
          city:
            example: Sydney
            type: string
            description: The city component of the address.
          state:
            example: NSW
            type: string
            description: The state component of the address.
          zip:
            example: 2000
            type: number
            description: Postal code.
          country:
            example: AU
            type: string
            description: Country.
      drawee:
        description: The entity or person who is obligated to pay upon acceptance of the bill.
        type: object
        properties:
          type:
            type: string
            default: Drawee
            enum:
            - Drawee
          id:
            example: did:web:pacifictradebank.example.com
            type: string
            format: uri
            description: A unique party identifier.
          name:
            example: Pacific Trade Bank Ltd
            type: string
            description: Trade party name.
          street:
            example: 340 Financial Street
            type: string
            description: The street component of the address.
          city:
            example: Sydney
            type: string
            description: The city component of the address.
          state:
            example: NSW
            type: string
            description: The state component of the address.
          zip:
            example: 2000
            type: number
            description: Postal code.
          country:
            example: AU
            type: string
            description: Country.
      payee:
        description: Party to which payment is to be made.
        type: object
        properties:
          type:
            type: string
            default: Payee
            enum:
            - Payee
          id:
            example: did:web:surfproexports.example.com
            type: string
            format: uri
            description: A unique party identifier.
          name:
            example: SurfPro Exports Pty Ltd
            type: string
            description: Trade party name.
          street:
            example: 12 Harbour Drive
            type: string
            description: The street component of the address.
          city:
            example: Sydney
            type: string
            description: The city component of the address.
          state:
            example: NSW
            type: string
            description: The state component of the address.
          zip:
            example: 2000
            type: number
            description: Postal code.
          country:
            example: AU
            type: string
            description: Country.
      guarantor:
        description: Financial institution guaranteeing payment of the bill (aval).
        type: object
        properties:
          type:
            type: string
            default: Guarantor
            enum:
            - Guarantor
          id:
            example: did:web:issueingbank.example.com
            type: string
            format: uri
            description: A unique party identifier.
          name:
            example: Global Trade Finance Bank
            type: string
            description: Trade party name.
          street:
            example: 1 Banking Plaza
            type: string
            description: The street component of the address.
          city:
            example: New York
            type: string
            description: The city component of the address.
          state:
            example: NY
            type: string
            description: The state component of the address.
          zip:
            example: 10004
            type: number
            description: Postal code.
          country:
            example: US
            type: string
            description: Country.
      seller:
        description: Party selling merchandise or services.
        type: object
        properties:
          type:
            type: string
            default: Seller
            enum:
            - Seller
          id:
            example: did:web:surfproexports.example.com
            type: string
            format: uri
            description: A unique party identifier.
          name:
            example: SurfPro Exports Pty Ltd
            type: string
            description: Trade party name.
          street:
            example: 12 Harbour Drive
            type: string
            description: The street component of the address.
          city:
            example: Sydney
            type: string
            description: The city component of the address.
          state:
            example: NSW
            type: string
            description: The state component of the address.
          zip:
            example: 2000
            type: number
            description: Postal code.
          country:
            example: AU
            type: string
            description: Country.
      buyer:
        description: Party to which merchandise or services are sold.
        type: object
        properties:
          type:
            type: string
            default: Buyer
            enum:
            - Buyer
          id:
            example: did:web:waveridersupplies.example.com
            type: string
            format: uri
            description: A unique party identifier.
          name:
            example: Wave Rider Supplies, Inc
            type: string
            description: Trade party name.
          street:
            example: 210 Ocean Road
            type: string
            description: The street component of the address.
          city:
            example: Williamsburg
            type: string
            description: The city component of the address.
          state:
            example: VA
            type: string
            description: The state component of the address.
          zip:
            example: 23185
            type: number
            description: Postal code.
          country:
            example: US
            type: string
            description: Country.
      sellersBank:
        description: Bank designated by the seller to receive payment.
        type: object
        properties:
          type:
            type: string
            default: SellersBank
            enum:
            - SellersBank
          id:
            example: did:web:pacifictradebank.example.com
            type: string
            format: uri
            description: A unique party identifier.
          name:
            example: Pacific Trade Bank Ltd
            type: string
            description: Trade party name.
          country:
            example: AU
            type: string
            description: Country.
      buyersBank:
        description: Bank employed by the buyer to make a payment.
        type: object
        properties:
          type:
            type: string
            default: BuyersBank
            enum:
            - BuyersBank
          id:
            example: did:web:globaltradebank.example.com
            type: string
            format: uri
            description: A unique party identifier.
          name:
            example: Global Trade Finance Bank
            type: string
            description: Trade party name.
          country:
            example: US
            type: string
            description: Country.
      documentaryCreditBeneficiary:
        description: Name and address of the beneficiary of a documentary credit.
        type: object
        properties:
          type:
            type: string
            default: DocumentaryCreditBeneficiary
            enum:
            - DocumentaryCreditBeneficiary
          id:
            example: did:web:surfproexports.example.com
            type: string
            format: uri
            description: A unique party identifier.
          name:
            example: SurfPro Exports Pty Ltd
            type: string
            description: Trade party name.
          country:
            example: AU
            type: string
            description: Country.
      documentaryCreditDrawee:
        description: Name and address of party on whom any draft drawn under a documentary credit is to be drawn.
        type: object
        properties:
          type:
            type: string
            default: DocumentaryCreditDrawee
            enum:
            - DocumentaryCreditDrawee
          id:
            example: did:web:pacifictradebank.example.com
            type: string
            format: uri
            description: A unique party identifier.
          name:
            example: Pacific Trade Bank Ltd
            type: string
            description: Trade party name.
          country:
            example: AU
            type: string
            description: Country.
      monetaryAmount:
        description: The monetary amount of the bill of exchange.
        type: object
        properties:
          amount:
            example: 45000.00
            type: number
            format: float
            description: The face value amount.
          currency:
            example: USD
            type: string
            minLength: 3
            maxLength: 3
            description: ISO 4217 three-letter currency code.
      paymentTerms:
        example: At 90 days sight
        type: string
        description: Identification of the terms of payment between the parties to a transaction.
      paymentMethod:
        example: Documentary credit
        type: string
        description: Code specifying a method of payment.
      paymentLocation:
        example: New York
        type: string
        description: Name of the place where the payment has to be made.
      authentication:
        example: "Signed and authenticated by SurfPro Exports Pty Ltd, authorised signatory"
        type: string
        description: Proof that a document has been authenticated.
      documentEndorsement:
        example: "Pay to the order of Pacific Trade Bank Ltd"
        type: string
        description: Proof that a document has been signed or endorsed.
      purchaseOrderNumber:
        example: PO-WRS-2025-001
        type: string
        description: Identifier assigned by the buyer to an order.
      invoiceNumber:
        example: INV-2025-031-001
        type: string
        description: Reference number to identify an invoice.
      contractNumber:
        example: CTR-2025-001
        type: string
        description: Identifier of a contract concluded between parties.
      documentaryCreditIdentifier:
        example: LC-2025-AU-456789
        type: string
        description: Reference number to identify a documentary credit (letter of credit).
      documentaryCreditIssueDate:
        example: '2025-02-15T00:00:00Z'
        type: string
        format: date-time
        description: Issue date of a documentary credit.
      documentaryCreditEffectiveEndDate:
        example: '2025-07-31T00:00:00Z'
        type: string
        format: date-time
        description: Date on which the validity of a documentary credit expires.
