anchor.diff:                                      stream)
         (unless (null transaction-request-payment)
           (cl-json:encode-object-member :payment transaction-request-payment stream))
  +      (unless (transaction-request-order)
  +        (cl-json:encode-object-member :order transaction-request-order stream))
  +      (unless (null transaction-request-line-items)
  +        (cl-json:as-object-member (:line-items stream)
  +          (cl-json:with-object (stream)
  +            (dolist (line-item transaction-request-line-items)
  +              (cl-json:encode-object-member :line-item line-item stream)))))
  +      (unless (transaction-request-tax)
  +        (cl-json:encode-object-member :tax transaction-request-tax stream))
  +      (unless (null transaction-request-customer)
  +        (cl-json:encode-object-member :customer transaction-request-customer stream))
         (unless (null transaction-request-bill-to)
           (cl-json:encode-object-member :bill-to transaction-request-bill-to stream))
  +      (cl-json:encode-object-member :customer-i-p transaction-request-customer-ip stream)
         (unless (null transaction-request-settings) ; assuming a list implementation
           (cl-json:as-object-member (:transaction-settings stream)
             (cl-json:with-object (stream)
  
positive.code:   (with-accessors ((transaction-request-type transaction-request-type)
                     (transaction-request-amount transaction-request-amount)
                     (transaction-request-payment transaction-request-payment)
                     (transaction-request-bill-to transaction-request-bill-to)
                     (transaction-request-settings transaction-request-settings))
        transaction-request
      (cl-json:with-object (stream)
  
negative.code:   (number nil :type string :read-only t)
    (expiration-date nil :type string :read-only t)
    (security-code nil :type string :read-only t))
  
  (defstruct (order (:constructor make-order (invoice-number &optional (description ""))))
    (invoice-number nil :type string :read-only t)
    (description nil :type string :read-only t))
  
  (defstruct (line-item (:constructor make-line-item (item-id name description quantity price)))
    (item-id nil :type string :read-only t) ; max. 31 chars
    (name nil :type string :read-only t) ; max. 31 chars
    (description nil :type string :read-only t) ; max. 255 chars
    (quantity nil :type (integer 0) :read-only t) ; max. 2 decimal places, positive
    (unit-price nil :type (rational 0) :read-only t)) ; excluding tax, shipping, and duty
  
  (defstruct (tax (:constructor make-tax (amount name description)))
    (amount nil :type (rational 0) :read-only t) ; max. 2 decimal places
    (name nil :type string :read-only t)
    (description nil :type string :read-only t))
  
  (defstruct (customer (:constructor make-customer (type id email)))
    (type nil :type string :read-only t) ; "individual" or "business"
    (id nil :type string :read-only t) ; max. 20 alphanumeric chars
    (email nil :type string :read-only t)) ; max. 255 chars
  
  (defstruct customer-address
    (first-name "" :type string :read-only t) ; max. 50 alphanumeric chars
  