Invoice Extensions

Configure invoice delivery behavior and payment flow overrides using the Invoice Delivery Extension. This section covers customizing distribution methods and payment processing for OIOUBL format invoices.

Overview

The Invoice Delivery Extension allows you to override default conventions for:

  • Distribution methods (email, print, SMS, E-boks, etc.)
  • Payment flow (default, manual, automatic)

This is particularly useful when working with OIOUBL format invoices that need custom delivery or payment behavior.

Extension Schema

The extension schema is available at:

https://app.farpay.io/xsd/common/extension.xsd

Extension Types

Force Send Method

Override the default send method for an invoice.

Force Payment Method

Force a manual payment method when the customer already has an agreement.

Implementation

Basic Extension Structure

<ExtensibleContent>
    <FarPay>
        <!-- Extension configuration here -->
    </FarPay>
</ExtensibleContent>

Force Send Method Example

<ExtensibleContent>
    <FarPay>
        <ForceSendMethod>
            <Channel>Email</Channel>
            <ToAddress>[email protected]</ToAddress>
            <Note>Custom delivery note</Note>
        </ForceSendMethod>
    </FarPay>
</ExtensibleContent>

Force Payment Method Example

<ExtensibleContent>
    <FarPay>
        <ForcePaymentMethod>
            <Method>Manual</Method>
            <Reason>Customer requested manual payment</Reason>
        </ForcePaymentMethod>
    </FarPay>
</ExtensibleContent>

Extension Properties

Force Send Method Properties

PropertyTypeDescriptionValues
ChannelstringDelivery channelEmail, SMS, Print, XML
ToAddressstringDelivery addressEmail, phone, GLN, etc.
NotestringAdditional noteCustom message

Force Payment Method Properties

PropertyTypeDescriptionValues
MethodstringPayment methodManual, Automatic, Default
ReasonstringReason for overrideCustom explanation

Use Cases

Custom Email Delivery

<ExtensibleContent>
    <FarPay>
        <ForceSendMethod>
            <Channel>Email</Channel>
            <ToAddress>[email protected]</ToAddress>
            <Note>Please forward to appropriate department</Note>
        </ForceSendMethod>
    </FarPay>
</ExtensibleContent>

Manual Payment Override

<ExtensibleContent>
    <FarPay>
        <ForcePaymentMethod>
            <Method>Manual</Method>
            <Reason>Customer has payment agreement but requested manual processing</Reason>
        </ForcePaymentMethod>
    </FarPay>
</ExtensibleContent>

SMS Notification

<ExtensibleContent>
    <FarPay>
        <ForceSendMethod>
            <Channel>SMS</Channel>
            <ToAddress>+4512345678</ToAddress>
            <Note>Your invoice is ready for payment</Note>
        </ForceSendMethod>
    </FarPay>
</ExtensibleContent>

Integration with OIOUBL

When using OIOUBL format invoices, the extension is added to the invoice structure:

<cac:Invoice xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2">
    <!-- Standard OIOUBL content -->
    <cbc:ID>INV-001</cbc:ID>
    <cbc:IssueDate>2023-01-15</cbc:IssueDate>
    
    <!-- FarPay Extension -->
    <cac:AdditionalDocumentReference>
        <cbc:ID>FarPayExtension</cbc:ID>
        <cac:Attachment>
            <cbc:EmbeddedDocumentBinaryObject>
                <ExtensibleContent>
                    <FarPay>
                        <ForceSendMethod>
                            <Channel>Email</Channel>
                            <ToAddress>[email protected]</ToAddress>
                        </ForceSendMethod>
                    </FarPay>
                </ExtensibleContent>
            </cbc:EmbeddedDocumentBinaryObject>
        </cac:Attachment>
    </cac:AdditionalDocumentReference>
</cac:Invoice>

Delivery Integration

When creating deliveries with extensions:

{
  "DeliveryType": "Invoice",
  "DeliveryFormat": "XML",
  "File": {
    "Filename": "invoice_with_extension.xml",
    "Data": "base64_encoded_content"
  }
}

Error Handling

Common Extension Errors

ErrorDescriptionSolution
Invalid extension formatMalformed extension XMLValidate against XSD schema
Unsupported channelChannel not supportedCheck available channels
Invalid address formatAddress format incorrectVerify address format
Extension conflictConflicting extensionsRemove conflicting extensions

Best Practices

  1. Validate extensions - Always validate against the XSD schema
  2. Test thoroughly - Test extensions in development environment
  3. Document reasons - Always provide clear reasons for overrides
  4. Monitor usage - Track extension usage and effectiveness
  5. Fallback gracefully - Ensure system works without extensions

Related Endpoints