mailedOnDate field to check transactions to track when checks were mailed<Payables /> componentrecurringTemplateId field to invoice responses. This field is present when an invoice was created from a recurring template and contains the ID of the template that created it.<PayableDetails /> and <ReceivableDetails /> components.<PayableDetails /> header components.<Counterparties /> component.<Counterparties /> component.favicon customization support in developer settings.comparison operator to approval policy amount triggers to allow for more flexible approval rules.splitDocuments flag to split a single PDF of multiple invoices into separate invoices.comparison operator to approval policy amount triggers<Counterparties /> componentsautomatic rule type to approval policies to automatically approve invoices that match the policy.NULL and NOT_NULL metadata values.Ui improvements for duplicate vendor detection in <PayableDetails /> component
Added local persistence for date, column, and status filters in <Payables /> component
Added ability to provide custom status tabs in <Payables /> and <Receivables /> components
Added support for multi-invoice processing in <Payables /> component
Added support for custom search bar in <Payables /> component
Added support for fallback trigger (when no other policies on the same level apply) in <ApprovalPolicy /> component
Added support for restoring history of an approval policy in <ApprovalPolicy /> component
Improved wallet payment method support.
returnPaymentTiming to invoice find to return the payment timing for each invoice.sessionId to invalidate tokens endpoint to revoke active tokens for a specific session.returnPaymentTiming to <Payables /> component to return the payment timing for each invoice.bankAccount and check payment methods.bankAccount payment methods. This can be used to set the bank account name on the ACH transaction that is shown on the vendor's bank statement.<PayableDetails /> component.<ApprovalPolicies /> component to control the approval policy flow.<Counterparties /> component.<Payables /> and <Receivables /> components.<Payables /> and <Receivables /> components.ocr.splitDocuments flag on the entity customization options.redirectToPortal flag to entity onboarding emails and links for payees. This lets you redirect the payee to the vendor portal after they onboard.vendorPortalOptions to entity onboarding emails and links for payees. This lets you specify options for the vendor portal.<Counterparties /> component to redirect customize the onboarding and vendor portal links.redirectToPortal flag to enable this behavior.<Payables /><Receivables /><PayableDetails /><ReceivableDetails />See documentation for more details.
BREAKING: Moved entity.plaidLinkToken to entity.paymentMethod.plaidLinkToken for consistency. No changes to the API, so this is backwards compatible.
ocrJobId to invoices. This will allow you to get the raw OCR data for an invoiceupstreamPoliciesApproved and upstreamPolicyId fields. This will allow you to track the approval status of the upstream policies.approverId filter on invoice find, only invoice that have the approver in a slot with all upstream policies approved will be returned.amount,payerId, vendorId, paymentDestinationId, and paymentSourceId to transactions.ocrJobId on an invoice, create vendor and payment destination can be pre-filled on the invoice form.taxAmount and shippingAmount to invoices. In a future release, OCR will pull tax and shipping amount on the invoice level instead of the line item level by default. This makes Mercoa more consistent with most accounting software.creatorUserId on invoices and other invoice search endpoints.NULL metadata values. This is useful for filtering invoices by metadata that is not set.<PayableTaxAndShipping /> to support tax and shipping on the invoice level.transaction endpoints. These endpoints allows you to search for and retrieve transactions, which include failure reasons and check numbers. See documentation for more details.ANY approver on any invoice approval slot. This means users will not be required to select an unique approver when creating an invoice.autoAssign to approval policies to automatically assign approvers to the invoice.vendorCredits! See documentation for more details.noteToSelf on the remittance stub of the check by setting the printDescription payment destination optionsvendorCredits in the <PayableDetails /> and <Counterparty> components. See documentation for more details.APPROVE and REJECT buttons on <PayableDetails /> will save the invoice changes before submitting.batchPayment support to invoices. This will allow users to pay multiple invoices in a single transaction. See documentation for more details.counterpartyPreSubmit support to all <Counterparties /> components, as well as <PayableDetails />. This will allow you to validate and modify the counterparty data before it is saved.batchPayment support to <PayableDetails /> with the <PaymentOptions/> sub-component. This will allow users to pay multiple invoices in a single transaction.copyUsersFrom to add-entities endpoint. This lets you copy users/roles from an existing entity in the group.<Counterparties /> component.date pickers in all components.<StatusTabs /> component.emailTemplates endpoint to entity. This endpoint lets you manage email templates for an entity.additionalUsers to approval policiesUNASSIGNED state.alternativeInboxDomains to organization to support custom inbox domains on multiple domains.counterparty.onboarding.completed webhook<ApprovalPolicies /> component<ReceivableDetails /> <PayableDetails /> componentsreturnMetadata to counterparties search and entities searchmetadata filters to counterparties search and entities searchmetadata filters now support multiple values (OR filter)groupBy to invoice metricsreturnByDateFrequency to invoice metricscategory to line itemsforeignId support to all entity user endpoints.additionalRoles to approval policiesGroupPayablesTable component to display UNASSIGNED invoices at the group levelforeignId to support most entity ID parameters (invoice, counterparty, etc.).addEntities and removeEntities endpoints to entity groups endpoints.Added ability to generate a JWT token for an entity group. See documentation for more details.
Added metadata to entity update and entity create requests. This lets you add metadata to an entity in a single request.
Added metadata to entity get response. This lets you get metadata from an entity in a single request.
<MercoaSession> component.invoiceOrderByField enum. This will allow you to order by the deduction date, invoice date, and settlement date.notifyPayeeCounterparty and notifyPayorCounterparty options to notification policies. This lets you send and control notifications to the vendor (AP) or customer (AR).double instead of an integer in the lineItem object.<Approvals /> component.<Payables /> component.notifyPayeeCounterparty and notifyPayorCounterparty options to notification policies. This lets you send and control notifications to the vendor (AP) or customer (AR).<EntityOnboarding> component now triggers an "onboardingComplete" callback when the onboarding flow is complete.dateType filter for invoice search and invoice metrics.
You can now filter by start and end date for:
invoice endpoints now support using the foreignId as the invoiceId in the path. This will allow you to use your own IDs for invoices instead of the Mercoa generated IDs.paymentMethod endpoints for custom payment methods now support using the foreignId as the paymentMethodId in the path. This will allow you to use your own IDs for payment methods instead of the Mercoa generated IDs.logo field of the entity response.onRedirect to onUpdate and made this prop optional. It will be called when the invoice is updated or deleted.supportedSchedulePaymentDates in the <PayableOverview> component, which enables overrides for setting payments dates on weekends, holidays, and in the past.metadata to a payment method.react-pdf instead of the native PDF viewer.lineItemMetadata and lineItemGlAccountId parameters to the GET /invoices and GET /entity/:entityId/invoices endpoints.<PayableForm/> are now automatically set to readOnly depending on the invoice status.<PayableDetails /> component now exposes new customization options for the <PayableForm/> and <PayableDocument/>. Please see the documentation for more details.minAmount and maxAmount to custom payment method schemascalculatePaymentTiming endpoint to calculate the payment timing for an invoice. See documentation for more details.BREAKING: renamed method fees.calculate to calculate.fee to match the new endpoint structure
calculatePaymentTiming endpoint to display payment timing information on invoicesentity endpoints now support using the foreignId as the entityId in the path. This will allow you to use your own IDs for entities instead of the Mercoa generated IDs.entityGroups. Entity groups allow you to group entities together and query invoices/metrics across the group. See the documentation for more details.USBankAccountNumber and USBankRoutingNumber types to custom payment method schemasavailable balance to custom payment methodsfailureType can now be specified for invoices with custom payment methods that failforeignId is now optional on custom payment methodsApprovalPolicy now returns createdAt and updatedAt fields.CustomPaymentMethodSchema now accepts an estimatedProcessingTime field. This field is used to display an estimated processing time for a payment method on the invoice details page.<ReceivableDetails /> now shows real time previews of the PDF and Payment Portal.<PayableDetails /> now supports payment timing information.Webhooks types are now included in the Mercoa SDK and Docs. See the webhooks documentation for more details.
roundedCorners option to organization colorScheme options. This lets you control the border-radius of Mercoa React/iFrame components.accountId to counterparties endpoint. This lets you specify the account ID the vendor has on file for a customer.isNetworkPayee and isNetworkPayer to entities endpoint. This lets you mark an entity as available to any customer on your platform.entityId and vendorNetwork as body parameters instead of a query parameters.<InvoiceInbox /> component has been renamed to <Payables /><InvoiceTable /> component has been renamed to <PayablesTable /><InvoiceDetails /> component has been renamed to <PayableDetails />excludePayables and excludeReceivables filters to the <InvoiceMetrics /> component.<Receivables /> component to display receivables for an entity. This component is similar to the <Payables /> component, but displays receivables instead of payables.<ReceivableDetails /> component to create and display details for a receivable.getSourceEmail endpoint to return the source email that created an invoice.externalAccountingSystem to organization response.<InvoiceDetails /> customization options, including the ability to choose which side the document preview shows upinvoiceMetrics to the /findCounterparties endpoint. This will return the total amount/count of invoices for a counterparty, as well as total/count grouped by invoice status.search parameter on the /invoices, /entity/{entityId}/invoices, and /invoice-metrics endpoints now searches by vendor, invoice number, and amount!metadata parameter to the /invoices and /entity/{entityId}/invoices endpoints. This will allow you to filter for invoices with specific custom field values, like a project ID or PO number.React components have also been updated to take advantage of these new features.
returnByDate option to invoice metrics endpoint. This will return metrics grouped by day for the specified date range.heightOffset parameter to base MercoaSession component. Will be used in all fix height components to offset the height of the component.SAVE AS ADMIN button to invoice details page. This will allow admins to update invoice details such as the invoice number, invoice date, and due date even after the invoice has been scheduled or paid.disableLineItems from token options. This option is now deprecated and will be removed in the future.lineItems to token options. This option replaces disableLineItems and instead allows you to make line items OPTIONAL, REQUIRED, or DISABLED.uploadedImage on invoice creation to document for consistency with other endpoints.disableLineItem to token options. This option will disable the ability to add/view line items to an invoice when creating an invoice.bankAccount can be enabled for checks
and used as the payment source when the payment destination is a check.counterparties and approvals page to token options. This page allows users to add and manage counterparties and approval rules.createEntity and updateEntity endpoints as well as the Business Representative endpoint.getBalance endpoint to paymentMethods. This endpoint will return the current balance for an payment method. Currently only supported for bank accounts added via Plaid.markPaid option on iframeOptions. Instead, use the new offline payment method type as the destination.Removed ownedByOrg on the entity object. Please use isCustomer instead.
isCustomer on the entity object is now a required field for entity creation. It remains optional for entity updates.
Removed createdById on the invoice object. Please use creatorUserId instead.
Removed creatorId on the invoice object. Please use creatorEntityId instead.
glAccountId to invoice line items. This field is used to map line items to a GL Account. This field is optional.lineItem option to metadata. This field is used to map metadata to a line item.creatorEntityId to invoice /create and /update request types. creatorEntityId will become a required field in the future. It is recommended to use this field instead of creatorId which will be deprecated in the future.creatorUserId to invoice /create and /update request and response types. It is recommended to use this field instead of createdById which will be deprecated in the future.foreignId to invoice /create and /update request and response types. This field is used to store an external ID for an invoice.ownedByOrg to isCustomer on the entity object. It is recommended to use this field instead of ownedByOrg which will be deprecated in the future.accountName to bank account payment methods. This is a user facing name for the bank account that is editable by the user.vendor and metadata triggers for approval policies.INVOICE_FAILED notification type.disabled field to notification policies to completely disable a notification type.includeFees=trueEntity: Enable Mercoa PaymentscreatorId to invoice creation to specify if the payee or payor created the invoicegenerateInvoicePdf endpoint to generate PDF of an invoiceisPayor and isPayee fields are now required when creating an entity./entity/{entityId}/invoice/{invoiceId}
AP11aa2b77 for the payment associated with this invoice.counterparty.added and counterparty.hidden webhooksmetadata, serviceStartDate and serviceEndDate fields to invoice line itemsownedByOrg filter to entity searchpayerId filter to invoice searchexcludePayables and excludeReceivables filters to entity invoice searchDELETE endpoint for entity metadataarchivePayees has been renamed to hidePayeesmercoaClient.entity.addPayees and mercoaClient.entity.archivePayees are now mercoaClient.entity.counterparty.addPayees and mercoaClient.entity.counterparty.hidePayeesKEY_VALUE to support key value pairs.markPaid to allow users to mark invoices as paid on the iFrame.expiresIn to set the expiration time of a token./entity/{entityId}/counterparties/payees/entity/{entityId}/counterparties/payors
/entity/{entityId}/counterparties endpoint.
It is recommended to use these endpoints instead, as they will support pagination, search, and higher performance.
The old endpoint will be deprecated in the future.VENDOR_NAME and PAYER_NAME to invoice order by options.counterpartyId filter to findCounterparties endpoint.getOnboardingLink and sendOnboardingLink endpoints to the entity object.
Added invoiceId parameter to:
Added archivePayees endpoint.
addPayees endpoint.paymentMethod is now a discriminated union instead of nested objects. This change was made in v0.2.0 but had backwards compatibility. This change is now required.
fundedDate has been renamed to settlementDate for consistency with industry norms.
Added defaultSource and defaultDestination parameters to paymentMethod creation and update requests.
Added isDefaultSource and isDefaultDestination parameters to paymentMethod response.
Added formationDate to entity creation and update requests.
vendorId and approverId parameters to:
getToken and getRawToken endpoints for an entity and entity users:
getRawToken is a GET endpoint that returns a JWT token for use with the APIgetToken is a POST endpoint that returns a JWT token for use with the iFrame. This endpoint takes in a configuration object to customize the iFrame experience.userId has been renamed to assignedUserId for consistency with the response objectapprovalSlotId is now needed to specify the which slot the user will be assigned to.userNotificationPolicy endpoints to control what notifications are sent to a user. See documentation for more details.Changed createPaymentMethod endpoint when creating a bank account to require accountId when using Plaid. This is to support multiple bank accounts per Plaid Link:
Old:
{
type: 'bankAccount',
...
plaidPublicToken: 'public-sandbox-1234',
}
New:
{
type: 'bankAccount',
...
plaid: {
publicToken: 'public-sandbox-1234',
accountId: '1234',
}
}
getToken endpoint for an entity user:
/entity/{entityId}/user/{userId}/tokenmercoaClient.entity.user.getToken(...entity.find invoice.find and entity.invoice.find now return paginated results.
Previously, the response would be an array of the data requested. Now, the response is an object with the data and metadata about the request.
The response now looks like this:
{
data: [ ... ],
count: 100,
hasMore: true,
}
Notifications are launched in beta! Your entity users can now get notifications for events like INVOICE_APPROVAL_NEEDED and INVOICE_PAID.
Notifications are available in the dashboard, iFrame, and the API. Email notifications are coming soon.
entity.entityUser.notifications.findPython issue with circular dependencies is fixed. Types are once again exported at the root level to make imports easier.
paymentMethod is now a discriminated union instead of nested objects.
Old Payment Method:
{
type: 'bankAccount'
bankAccount: {
routingNumber: '12345'
accountNumber: '9876'
...
}
}
{
type: 'check'
check: {
addressLineOne: '123 Fake Street'
stateOrProvince: 'California'
postalCode: '94105'
...
}
}
New Payment Method:
{
type: 'bankAccount'
routingNumber: '12345'
accountNumber: '9876'
...
}
{
type: 'check'
addressLineOne: '123 Fake Street'
stateOrProvince: 'California'
postalCode: '94105'
...
}
The 0.2.0 uses namespaces to make using the SDK more intuitive. The API routes have not changed, only the SDK structure
For example:
mercoaClient.paymentMethod.get() --> mercoaClient.entity.paymentMethod.get()
mercoaClient.entity.getInvoices() --> mercoaClient.entity.invoice.find()
mercoaClient.entityUsers.get() --> mercoaClient.entity.users.get()
mercoaClient.invoice.getDocuments() --> mercoaClinet.invoice.document.getAll()
mercoaClient.invoice.approve() --> mercoaClinet.invoice.approval.approve()
mercoaClient.invoice.getComment() --> mercoaClient.invoice.comment.get()
...etc
createVendor and updateVendor options on invoice creation/update.New pages for managing Entity Users and Approval Policies are live!
DRAFT to APPROVEDDRAFT to NEW, and require the rules on the policy to be fulfilled to move into the APPROVED stateHotfix:
Update Payment Method had the wrong request body parameters that were too restrictive.
invoiceDate and createdBy added to invoice.userId added to invoice comment.hasDocumentsAdded new invoice status of Scheduled
If you are using the API to create or update invoices, invoices will need to be set as Scheduled instead of New to be scheduled for processing. iFrame users will not be affected.
Added supportedCurrencies field to Custom Payment Method Schemas
This field is optional and will default to USD. If your payment rail supports currency other than USD or does not support USD, set this value to the supported currencies.
Entity Updates
Added new fields for isPayor and isPayee. These fields will become mandatory in the future. These fields determine if this entity is a payor or payee (vendor). If the entity is both, then both fields should be set to true.
Updated documentation for ownedByOrg field. This field currently determines if the entity is a payor or payee (vendor). In the future, this field will only be used to determine if you have a direct relationship with this entity.
Note: Current behavior will check if the isPayor and isPayee fields are not set and fall back to the old ownedByOrg method of determining who is a payer or vendor.
emailToAlias field. This field is used to support email forwarding.
Support for:
Python SDK Update
Python SDK
Manual webhook retrigger
Initial release