Getting started
Set up your workspace and bring your team in.
Sign up, then add your name and your business name to create your workspace.
Add your logo and company details in Settings > General. They print on every quote and invoice you send.
Invite teammates in Settings > Members as members or admins. Owners and admins see invoices and revenue, and members don't. How many people can join depends on your plan.
Importing data
Bring contacts, companies and deals in from a spreadsheet.
Choose Import on the Contacts or Companies page, upload a CSV or Excel file, and pick what it holds: contacts, companies or deals.
.csv.xlsx.xls
BrytIO suggests which column goes where. Check the mapping and skip any column you don't need.
Contacts whose email is already in BrytIO are skipped, and so are companies whose name is already there. Contacts without an email are always added.
To refresh records from another system, turn on Update existing matches. Matching rows then fill in the blank fields of the record they match, or replace its values if you choose to overwrite. Blank cells never erase anything.
To update deals in bulk, export them, edit the file and import it with Update existing matches on. An update never changes a deal's stage: move it on the board, or mark it won or lost on the deal, so its automations run. Only owners and admins can change deal values this way, and updates run no automations or webhooks.
A file can also set tags, a contact's owner (by the teammate's email) and your custom fields. Workspaces that use Vendor bills can load each company's distributor customer IDs and markup the same way. Tags and distributor IDs are only ever added, never removed.
Large files are sent in batches with a progress bar. Rows that couldn't be imported, with the reason, download as a CSV you can fix and import again. If an import stops part-way, the rows it didn't reach are in that file too. Rows that were imported with a warning are only in the separate report, so importing the file again never adds them twice.
Deals match only by the Deal ID column a deals export includes: a row whose Deal ID is already in BrytIO is skipped, or updated when Update existing matches is on. Deals without a Deal ID are always added, even if the same deal is already there, so import each such file once. A deal import can create the companies it names.
You can also connect Microsoft 365 in Settings > Email to bring in your Outlook contacts and the people you email.
If you then turn on email logging, BrytIO stores each logged email's subject, addresses and a preview of up to 500 characters, never the full message or its attachments.
Stripe setup
Take card payments on your invoices through your own Stripe account.
An owner or admin opens Settings > Integrations and chooses Connect Stripe.
Sign in to Stripe, or create an account, and approve the connection. Payments go to your own Stripe account, and BrytIO takes no fee.
Invoices you send then link to a secure payment page, where your customer sees the invoice and pays it by card. When they do, the invoice is marked paid.
Paid by check or bank transfer? Record the payment on the invoice.
Shipping setup
Track shipments for your customers. There's nothing to install.
Open Shipments, create a shipment for a customer, and enter the carrier and the tracking number.
Don't see Shipments in the sidebar? An owner or admin can turn it on in Settings > Modules.
BrytIO tracks UPS, FedEx, USPS, and DHL Express shipments and updates the status as the carrier reports it.
Each shipment has a tracking page you can share, and you can email it to your customer from the shipment.
BrytIO tracks shipments. It doesn't buy labels or compare shipping rates.
API & webhooks
Connect BrytIO to your other systems with the REST API and webhooks.
API keys and webhooks are included with the Team and Enterprise plans. An owner or admin creates them in Settings > Developers.
Copy a new key when it's shown. BrytIO keeps only a hash of it, so it can't show the key again.
Send the key as a bearer token to the base URL.
https://brytio.com/api/v1Authorization: Bearer <your API key>
Each client IP address can make up to 120 requests a minute.
Resources:
activitiesautomationscompaniescontactsdealsinvoicesmequotessequencesshipmentstags
Only draft invoices can be deleted. An invoice that was sent, paid or given a pay link is kept: deleting it answers 409 Conflict, and you void it instead by setting its status to VOID.
DELETE /api/v1/invoices/<id>POST /api/v1/invoices/<id>/status {"status": "VOID"}
Each invoice the API returns has a portalUrl: the page where your customer sees the invoice and, when you take card payments, pays it. Give customers that link. It has no value until the invoice is sent, or once it is void. The older stripePaymentLinkUrl field stays for existing integrations, but don't send it to customers. It is usually empty now: BrytIO creates that Stripe link only when a customer chooses Pay now on the payment page.
portalUrl
A void invoice takes no payment. Recording a payment on one, or setting its status to PAID or PARTIALLY_PAID, answers 409 Conflict and changes nothing. A retry of a payment already recorded with the same reference answers 200 with duplicate: true, even once the invoice is void.
POST /api/v1/invoices/<id>/payments
Webhooks can subscribe to these events:
deal.createddeal.wondeal.lostdeal.deletedcontact.createdcompany.createdquote.createdquote.acceptedinvoice.createdinvoice.paidinvoice.overdue
They can also subscribe to these, which are sent only for changes made through the API, never for edits or deletions made in the BrytIO app:
deal.updatedcontact.updatedcontact.deletedcompany.updatedcompany.deleted
Not every action in the app sends an event. For example, an invoice made from a quote doesn't send invoice.created.
Each delivery is a JSON POST signed with HMAC SHA-256 using your webhook's secret. Settings > Developers shows each webhook's latest delivery and its status.
An invoice.created or invoice.paid delivery carries the invoice as the API returns it, with its portalUrl: the link to give your customer.