Class Bill

java.lang.Object
net.codecrete.qrbill.generator.Bill
All Implemented Interfaces:
Serializable

public class Bill extends Object implements Serializable
QR bill data
See Also:
  • Field Details

    • REFERENCE_TYPE_NO_REF

      public static final String REFERENCE_TYPE_NO_REF
      Reference type: without reference.
      See Also:
    • REFERENCE_TYPE_QR_REF

      public static final String REFERENCE_TYPE_QR_REF
      Reference type: QR reference.
      See Also:
    • REFERENCE_TYPE_CRED_REF

      public static final String REFERENCE_TYPE_CRED_REF
      Reference type: creditor reference (ISO 11649)
      See Also:
  • Constructor Details

    • Bill

      public Bill()
      Creates a new instance with default values for the format.
  • Method Details

    • getVersion

      public Bill.Version getVersion()
      Gets the version of the QR bill standard.
      Returns:
      the version
    • setVersion

      public void setVersion(Bill.Version version)
      Sets the version of the QR bill standard.
      Parameters:
      version - the version
    • getAmount

      public BigDecimal getAmount()
      Gets the payment amount
      Returns:
      the amount
    • getAmountAsDouble

      public Double getAmountAsDouble()
      Gets the payment amount as a Double instance
      Returns:
      the amount
    • setAmount

      public void setAmount(BigDecimal amount)
      Sets the payment amount.

      Valid values are between 0.01 and 999,999,999.99

      Parameters:
      amount - the amount
    • setAmountFromDouble

      public void setAmountFromDouble(Double amount)
      Sets the payment amount from a Double solid-line-with_scissors

      The value is saved with a scale of 2.

      Parameters:
      amount - the amount
    • getCurrency

      public String getCurrency()
      Gets the payment currency.
      Returns:
      the currency
    • setCurrency

      public void setCurrency(String currency)
      Sets the payment currency.

      Valid values are "CHF" and "EUR".

      Parameters:
      currency - the currency
    • getAccount

      public String getAccount()
      Gets the creditor's account number.
      Returns:
      the account number
    • setAccount

      public void setAccount(String account)
      Sets the creditor's account number.

      Account numbers must be valid IBANs of a bank of Switzerland or Liechtenstein. Spaces are allowed in the account number.

      Parameters:
      account - the account number
    • getCreditor

      public Address getCreditor()
      Gets the creditor address.
      Returns:
      the creditor address
    • setCreditor

      public void setCreditor(Address creditor)
      Sets the creditor address.
      Parameters:
      creditor - the creditor address.
    • getReferenceType

      public String getReferenceType()
      Gets the type of payment reference.

      The reference type is automatically set when a payment reference is set.

      Returns:
      one of the constants REFERENCE_TYPE_xxx.
      See Also:
    • setReferenceType

      public void setReferenceType(String referenceType)
      Sets the type of payment reference.

      Usually there is no need to set the reference type as it is automatically set when a payment reference is set..

      Parameters:
      referenceType - one of the constants REFERENCE_TYPE_xx
      See Also:
    • updateReferenceType

      public void updateReferenceType()
      Updates the reference type by deriving it from the payment reference.
    • getReference

      public String getReference()
      Gets the payment reference
      Returns:
      the reference
    • setReference

      public void setReference(String reference)
      Sets the payment reference.

      The reference is mandatory for QR IBANs, i.e. IBANs in the range CHxx30000xxxxxx through CHxx31999xxxxx. QR IBANs require a valid QR reference (numeric reference corresponding to the ISR reference format).

      For non-QR IBANs, the reference is optional. If it is provided, it must be valid creditor reference according to ISO 11649 ("RFxxxx").

      Both types of references may contain spaces for formatting.

      Parameters:
      reference - the payment reference number
      See Also:
    • createAndSetCreditorReference

      public void createAndSetCreditorReference(String rawReference)
      Creates and sets a ISO11649 creditor reference from a raw string by prefixing the String with "RF" and the modulo 97 checksum.

      Whitespace is removed from the reference

      Parameters:
      rawReference - The raw string
      Throws:
      IllegalArgumentException - if rawReference contains invalid characters
    • createAndSetQRReference

      public void createAndSetQRReference(String rawReference)
      Creates and sets a QR reference from a raw string by appending the checksum digit and prepending zeros to make it the correct length.

      As the QR reference is numeric, the raw string must consist of digits and whitespace only. Whitespace is removed from the reference.

      Parameters:
      rawReference - The raw string
      Throws:
      IllegalArgumentException - if rawReference contains invalid characters
    • getDebtor

      public Address getDebtor()
      Gets the debtor's address.
      Returns:
      the debtor address
    • setDebtor

      public void setDebtor(Address debtor)
      Sets the debtor's address.

      The debtor is optional. If it is omitted, both setting this field to null or setting an address with all null or empty values is ok.

      Parameters:
      debtor - the debtor address
    • getUnstructuredMessage

      public String getUnstructuredMessage()
      Gets the additional unstructured message.
      Returns:
      the unstructured message
    • setUnstructuredMessage

      public void setUnstructuredMessage(String unstructuredMessage)
      Sets the additional unstructured message.
      Parameters:
      unstructuredMessage - the unstructured message
    • getBillInformation

      public String getBillInformation()
      Gets the additional bill information.
      Returns:
      bill information
    • setBillInformation

      public void setBillInformation(String billInformation)
      Sets the additional bill information
      Parameters:
      billInformation - bill information
    • getAlternativeSchemes

      public AlternativeScheme[] getAlternativeSchemes()
      Get the alternative schemes.

      A maximum of two schemes are allowed.

      Returns:
      alternative schemes
    • setAlternativeSchemes

      public void setAlternativeSchemes(AlternativeScheme[] alternativeSchemes)
      Sets the alternative scheme parameters.

      A maximum of two schemes with parameters are allowed.

      Parameters:
      alternativeSchemes - alternative payment scheme information
    • getFormat

      public BillFormat getFormat()
      Gets the bill format.
      Returns:
      bill format
    • setFormat

      public void setFormat(BillFormat format)
      Sets the bill format.
      Parameters:
      format - bill format
    • getSeparator

      public QrDataSeparator getSeparator()
      Gets the line separator for the QR code data fields.

      The default is QrDataSeparator.LF. There is no need to change it except for improving compatibility with a non-compliant software processing the QR code data.

      Returns:
      the line separator for the QR code data fields.
    • setSeparator

      public void setSeparator(QrDataSeparator separator)
      Sets the line separator for the QR code data fields.

      The default is QrDataSeparator.LF. There is no need to change it except for improving compatibility with a non-compliant software processing the QR code data.

      Parameters:
      separator - the line separator for the QR code data fields.
    • getCharacterSet

      public SPSCharacterSet getCharacterSet()
      Gets the character set used for the QR bill data.

      Defaults to SPSCharacterSet.LATIN_1_SUBSET.

      Until November 21, 2025, SPSCharacterSet.LATIN_1_SUBSET is the only value that will generate QR bills accepted by all banks. This will change by November 21, 2025.

      Returns:
      the character set used for the QR bill data.
    • setCharacterSet

      public void setCharacterSet(SPSCharacterSet characterSet)
      Sets the character set used for the QR bill data.

      Defaults to SPSCharacterSet.LATIN_1_SUBSET.

      Until November 21, 2025, SPSCharacterSet.LATIN_1_SUBSET is the only value that will generate QR bills accepted by all banks. This will change by November 21, 2025.

      Parameters:
      characterSet - the character set used for the QR bill data.
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object