tipalti v0.3.0 Tipalti.API.Payer View Source

Payer functions.

Details are taken from: https://api.tipalti.com/v5/PayerFunctions.asmx

Link to this section Summary

Types

An invoice, used when creating invoices in create_or_update_invoices/1

An invoice approver, used when creating invoices in create_or_update_invoices/1

An invoice line item, used when creating invoices in create_or_update_invoices/1

All Payer API responses are of this form

Functions

Create new invoices or update existing ones

Get balances in your accounts

Link to this section Types

Link to this type invoice() View Source
invoice() :: %{
  :can_approve => boolean(),
  :date => String.t(),
  :idap => Tipalti.idap(),
  :is_paid_manually => boolean(),
  :subject => String.t(),
  optional(:ap_account_number) => String.t(),
  optional(:approvers) => [invoice_approver()],
  optional(:currency) => String.t(),
  optional(:custom_fields) => [Tipalti.key_value_pair()],
  optional(:description) => String.t(),
  optional(:due_date) => String.t(),
  optional(:income_type) => String.t(),
  optional(:internal_notes) => String.t(),
  optional(:line_items) => [invoice_line_item()],
  optional(:number) => String.t(),
  optional(:payer_entity_name) => String.t(),
  optional(:ref_code) => String.t(),
  optional(:status) => String.t()
}

An invoice, used when creating invoices in create_or_update_invoices/1.

Link to this type invoice_approver() View Source
invoice_approver() :: %{
  :email => String.t(),
  :name => String.t(),
  optional(:order) => integer()
}

An invoice approver, used when creating invoices in create_or_update_invoices/1.

Link to this type invoice_line_item() View Source
invoice_line_item() :: %{
  :amount => String.t(),
  optional(:banking_message) => String.t(),
  optional(:currency) => String.t(),
  optional(:custom_fields) => [Tipalti.key_value_pair()],
  optional(:description) => String.t(),
  optional(:e_wallet_message) => String.t(),
  optional(:external_metadata) => String.t(),
  optional(:internal_notes) => String.t(),
  optional(:line_type) => String.t(),
  optional(:quantity) => integer()
}

An invoice line item, used when creating invoices in create_or_update_invoices/1.

Link to this type payer_response() View Source
payer_response() :: {:ok, map()} | {:error, any()}

All Payer API responses are of this form.

Link to this section Functions

Link to this function create_or_update_invoices(invoices) View Source
create_or_update_invoices([invoice()]) :: payer_response()

Create new invoices or update existing ones.

Returns a list of invoice responses for each invoice, indicating if it succeeded and what the errors were if it didn’t.

See https://support.tipalti.com/Content/Topics/Development/APIs/PayerApi.htm for details.

Parameters

  • invoices[]: List of maps of invoice params.

    • idap: Payee id.
    • ref_code: Uniq id for this invoice (leave null for auto-generated id).
    • date: Invoice value date (estimated date and time the payee receives the funds).
    • due_date: The date and time the invoice is due to be paid.
    • line_items[]: List of invoice lines.

      • currency: Invoice currency.
      • amount: Invoice line amount.
      • description: Description of the invoice line.
      • internal_notes: Notes which are not displayed to the payee.
      • e_wallet_message: A message to attach to the payment. This message is sent to providers and appears on payee bank statements. If no value is provided, the InvoiceRefCode is used..
      • banking_message: A message to attach to the payment. This message is sent to providers and appears on payee bank statements. If a value is not provided, the EWalletMessage is used.
      • custom_fields[]: If custom fields have been defined for the invoice entity, the values of these fields can be set here. The field name must match the defined custom field name.

        • key: The custom field key.
        • value: The custom field value.
      • line_type: ?
      • external_metadata: ?
      • quantity: ?
    • description: Description of the invoice.
    • can_approve: Indicates whether or not the payee is able to approve the invoice.
    • internal_notes: Notes, which are not displayed to the payee.
    • custom_fields[]: If custom fields have been defined for the invoice entity, the values of these fields can be set here. The field name must match the defined custom field name.

      • key: The custom field key.
      • value: The custom field value.
    • is_paid_manually: If true, the invoice is marked as paid manually.
    • income_type: If the Tax Withholding module is enabled and there are multiple income types that can be associated with the payment, then you must enter the IncomeType per payment.
    • status: ?
    • currency: Invoice currency.
    • approvers: ?
    • number: ?
    • payer_entity_name: The name of the payer entity linked to the invoice.
    • subject: The text for the title of the invoice, displays for the payee in the Payee Dashboard or Suppliers Portal.
    • ap_account_number: ?

Returns

{:ok, map} where map contains the following fields:

  • invoice_results: List of invoice results

    • error_message: String; if there was an error creating the invoice.
    • ref_code: String; corresponds to the input invoices.
    • succeeded: Boolean; Indicates if creating the invoice succeeded.

Examples

iex> create_or_update_invoices([%{idap: "somepayee", ref_code: "testinvoice1", due_date: "2018-05-01", date: "2018-06-01", subject: "test invoice 1", currency: "USD", line_items: [%{amount: "100.00", description: "test line item"}]}, %{idap: "somepayee", ref_code: "testinvoice2", due_date: "2018-06-01", date: "2018-05-01", subject: "test invoice 2", currency: "USD", line_items: [%{amount: "100.00", description: "test line item"}]}])
{:ok,
 %{
   invoice_results: [
     %{
       error_message: "Due date cannot be earlier then invoice date",
       ref_code: "testinvoice1",
       succeeded: false
     },
     %{error_message: nil, ref_code: "testinvoice2", succeeded: true}
   ]
 }}
Link to this function get_balances() View Source
get_balances() :: payer_response()

Get balances in your accounts.

Returns account provider, account identifier, currency and amount in balance. Note: when submitting a payment, the balance may take some time before it is updated.

Examples

iex> get_balances()
{:ok,
  %{
    account_infos: [
      %{
        account_identifier: "1234",
        balance: "1000",
        currency: "USD",
        provider: "Tipalti"
      }
    ]
  }}