Your account holds the business details printed on documents and every setting under Settings in the app. The API exposes the same object: read it with GET /me, change it with PUT /account. Both act on the account your API key belongs to.
Read your account
GET /me
curl https://api.rebill.co.za/me \ -H "Authorization: Bearer sk_your_secret_key"
Response (abridged):
{
"id": "acc123",
"country": "ZA",
"default_currency": "ZAR",
"business_name": "Acme Corp Pty Ltd",
"business_email": "accounts@acme.co.za",
"business_phone": "+27821234567",
"vat_number": "4123456789",
"tax_label": "VAT",
"tax_rate": 1500,
"timezone": "Africa/Johannesburg",
"invoice_template": "standard",
"hide_quote_status": false,
"hide_quote_validity": false,
"next_invoice_number": 42,
"next_quote_number": 7,
"client_code_auto": true,
"client_code_prefix": "C",
"next_client_code_number": 118,
"subscription_status": "active",
"has_logo": true,
"logo_version": 1757400000
}The full object is described below. logo_version is only present on this endpoint: the unix second of the last logo upload, 0 without a logo.
Account object
Fields marked read only are returned by GET /me but ignored by PUT /account.
| Field | Type | Description |
|---|---|---|
| id | string | Unique identifier (read only) |
| country | string | Two letter country code chosen at signup (read only) |
| default_currency | string | ISO 4217 code of the default currency (read only) |
| multi_currency | boolean | Whether documents may use other currencies. Premium only; always false on the free plan |
| business_name | string | Trading name printed on documents |
| business_email | string | Sender and reply address for documents; stored lower case |
| business_phone | string | E.164 phone number, e.g. +27821234567 |
| business_website | string | Full URL including the scheme |
| business_address | object | Object with street_1, street_2, city, province, postal_code, country; null when not set |
| vat_number | string | Tax registration number. When empty, documents print without tax |
| tax_label | string | Label used for tax on documents, e.g. VAT or GST. Empty uses the country default |
| tax_rate | integer | Default tax rate in basis points (1500 = 15%) |
| tax_number_label | string | Label printed next to the tax number, e.g. VAT No. |
| vat_basis | string | accrual (default) · cash. Basis used by the VAT report |
| vat_category | string | A (default) · B. SARS tax period category |
| tax_entity_type | string | individual · company · company_sbc. Used by the tax tools; empty when not set |
| fiscal_year_start_month | integer | 1 to 12, the month the financial year starts |
| timezone | string | IANA zone name, e.g. Africa/Johannesburg. Empty means South African time |
| marketing_emails | boolean | Whether the account receives product news from Rebill |
| invoice_notes | string | Default notes on new invoices |
| quote_notes | string | Default notes on new quotes |
| invoice_bank_details | string | Default banking details on invoices |
| invoice_payment_terms | string | Payment terms line printed on invoices, up to 100 characters |
| terms | string | Terms and conditions in Markdown, shown on quotes and invoices |
| terms_on_pdf | boolean | Add the terms as a separate page on PDFs |
| custom_fields | object | Label to value map printed on every document, e.g. {"Reg. no": "2020/123456/07"} |
| email_messages | object | Key to text map of the messages Rebill sends. Keys: invoice_send, invoice_due_soon, invoice_due_today, invoice_past_due, invoice_payment_received, quote_send, statement_send, late_fee_applied. A missing key uses the default text |
| invoice_template | string | standard · modern · kamu · bold · ledger · dotmatrix · registry · arica |
| brand_colour | string | Hex colour such as #2563eb used on documents; empty for the default |
| brand_colour_emails | boolean | Apply the brand colour to emails as well |
| email_style | string | card · minimal · letter · brand. Free accounts can only use minimal |
| hide_quote_status | boolean | Hide the status line and the diagonal status mark on quotes (web, PDF and public link) |
| hide_quote_validity | boolean | Hide the "Valid until" line on quotes. The quote still expires on that date |
| include_assets_on_documents | boolean | Show item links and files in a Resources section on documents by default |
| attach_pdf_to_emails | boolean | Attach the PDF to client emails, including the ones Rebill sends for you |
| attach_pdf_to_whatsapp | boolean | Include the PDF in WhatsApp messages |
| cc_on_all_emails | boolean | Copy the business email on every client email |
| auto_reminders_enabled | boolean | Send invoice reminders automatically |
| reminder_schedule | array | Day offsets relative to the due date, from -30 to 90, up to 10 entries. Negative values are before the due date |
| invoice_reminder_hour | integer | 0 to 23, local hour reminders go out |
| reminder_whatsapp_enabled | boolean | Send reminders over WhatsApp as well as email |
| recurring_invoice_generate_hour | integer | 0 to 23, local hour recurring invoices are generated |
| quote_auto_convert | boolean | Convert accepted quotes to invoices automatically |
| quote_auto_convert_send_method | string | draft · email · email_whatsapp. What happens to the converted invoice |
| quote_auto_convert_due_days | integer | 1 to 90, days until the converted invoice is due |
| hide_quotes | boolean | Hide Quotes from the app menu |
| hide_recurring_invoices | boolean | Hide Recurring invoices from the app menu |
| hide_reports | boolean | Hide Reports from the app menu |
| hide_users | boolean | Hide Users from the app menu |
| hide_expenses | boolean | Hide Expenses from the app menu |
| hide_bank_import | boolean | Hide Bank import from the app menu |
| hide_purchase_orders | boolean | Hide Purchase orders from the app menu |
| module_picker_pending | boolean | Whether the first run module picker is still due (read only) |
| late_fee_enabled | boolean | Charge late fees on overdue invoices. Premium only |
| late_fee_type | string | percentage · fixed |
| late_fee_amount | integer | Percentage in basis points when the type is percentage (250 = 2.5%) |
| late_fee_amounts | object | Currency code to fee in cents when the type is fixed, e.g. {"ZAR": 5000} |
| late_fee_grace_days | integer | 0 to 30 days after the due date before a fee applies |
| late_fee_frequency | string | once · monthly |
| late_fee_cap_amounts | object | Currency code to maximum fee in cents when the type is percentage |
| apply_credits_to_invoices | boolean | Settle new invoices from client credit automatically |
| apply_credits_to_recurring_invoices | boolean | Settle generated recurring invoices from client credit automatically |
| next_invoice_number | integer | Next number in the account invoice sequence |
| next_quote_number | integer | Next number in the account quote sequence |
| next_purchase_order_number | integer | Next number in the purchase order sequence (read only) |
| client_code_auto | boolean | Assign client codes automatically on create and import |
| client_code_prefix | string | Prefix for automatic codes: letters, digits and dashes, up to 10 characters. Empty means C |
| next_client_code_number | integer | Next automatic client code number; codes are the prefix plus four digits, e.g. C0042 |
| subscription_status | string | free · active · canceled · exempt (read only) |
| is_agency | boolean | Whether this is an agency parent account (read only) |
| agency_sub_account_limit | integer | Sub accounts an agency may create (read only) |
| parent_account_id | string | Parent account for agency sub accounts; omitted otherwise (read only) |
| whatsapp_credits_free | integer | Free WhatsApp credits left (read only) |
| whatsapp_credits_paid | integer | Paid WhatsApp credits left (read only) |
| whatsapp_credit_reminder | integer | Credit balance that triggers the low credit reminder (read only) |
| supported_payment_providers | array | Payment providers available for the account country (read only) |
| storage_used_bytes | integer | Bytes used by item files (read only) |
| has_logo | boolean | Whether a logo is uploaded (read only) |
| api_key | string | Your secret API key (read only) |
Update your account
PUT /account
Replaces your account settings with the body you send. Read the account first, change the fields you need and send the result back: many fields are cleared or reset to false when they are missing from the request.
- Cleared when omitted:
business_phone,business_website,business_address,vat_number,invoice_notes,quote_notes,invoice_bank_details,invoice_payment_terms,terms,custom_fields,email_messages,reminder_schedule. - Reset to false when omitted: every boolean except
multi_currency,marketing_emailsandbrand_colour_emails. - Unchanged when omitted: everything else, including the tax settings, timezone, hours, template, colours, late fee values, the next numbers and the client code prefix.
| Field | Required | Type | Description |
|---|---|---|---|
| business_name | Yes | string | Trading name |
| business_email | Yes | string | Valid email address; stored lower case |
| business_phone | No | string | E.164 format; cleared when omitted |
| business_website | No | string | Full URL; cleared when omitted |
| business_address | No | object | Same shape as the account object; cleared when omitted |
| vat_number | No | string | Cleared when omitted |
| tax_label | No | string | Up to 30 characters; empty restores the country default |
| tax_rate | No | integer | 0 to 10000 basis points |
| tax_number_label | No | string | Up to 40 characters |
| vat_basis | No | string | accrual · cash; empty restores accrual |
| vat_category | No | string | A · B; empty restores A |
| tax_entity_type | No | string | individual · company · company_sbc; empty clears |
| fiscal_year_start_month | No | integer | 1 to 12 |
| timezone | No | string | IANA zone name; empty restores South African time |
| multi_currency | No | boolean | Premium only; forced to false on the free plan |
| marketing_emails | No | boolean | Product news opt in |
| invoice_notes | No | string | Cleared when omitted |
| quote_notes | No | string | Cleared when omitted |
| invoice_bank_details | No | string | Cleared when omitted |
| invoice_payment_terms | No | string | Up to 100 characters; cleared when omitted |
| terms | No | string | Markdown; cleared when omitted |
| terms_on_pdf | No | boolean | False when omitted |
| hide_quote_status | No | boolean | False when omitted (status shown) |
| hide_quote_validity | No | boolean | False when omitted (validity date shown) |
| include_assets_on_documents | No | boolean | False when omitted |
| attach_pdf_to_emails | No | boolean | False when omitted |
| attach_pdf_to_whatsapp | No | boolean | False when omitted |
| custom_fields | No | object | Label to value map; replaces the stored map, cleared when omitted |
| email_messages | No | object | Key to text map; replaces the stored map, cleared when omitted |
| cc_on_all_emails | No | boolean | False when omitted |
| auto_reminders_enabled | No | boolean | False when omitted |
| reminder_schedule | No | array | Up to 10 integers from -30 to 90; cleared when omitted |
| invoice_reminder_hour | No | integer | 0 to 23 |
| reminder_whatsapp_enabled | No | boolean | False when omitted |
| recurring_invoice_generate_hour | No | integer | 0 to 23 |
| quote_auto_convert | No | boolean | False when omitted |
| quote_auto_convert_send_method | No | string | draft · email · email_whatsapp |
| quote_auto_convert_due_days | No | integer | 1 to 90 |
| invoice_template | No | string | standard · modern · kamu · bold · ledger · dotmatrix · registry · arica |
| brand_colour | No | string | Hex colour with a leading #; empty clears |
| brand_colour_emails | No | boolean | Unchanged when omitted |
| email_style | No | string | card · minimal · letter · brand; empty restores minimal. Anything other than minimal on the free plan returns 402 |
| hide_quotes | No | boolean | False when omitted |
| hide_recurring_invoices | No | boolean | False when omitted |
| hide_reports | No | boolean | False when omitted |
| hide_users | No | boolean | False when omitted |
| hide_expenses | No | boolean | False when omitted |
| hide_bank_import | No | boolean | False when omitted |
| hide_purchase_orders | No | boolean | False when omitted |
| late_fee_enabled | No | boolean | False when omitted. True on the free plan returns 402 |
| late_fee_type | No | string | percentage · fixed |
| late_fee_amount | No | integer | Basis points; at least 1 when late fees are on and the type is percentage |
| late_fee_amounts | No | object | Currency code to cents, fixed type |
| late_fee_grace_days | No | integer | 0 to 30 |
| late_fee_frequency | No | string | once · monthly |
| late_fee_cap_amounts | No | object | Currency code to cents, percentage type |
| apply_credits_to_invoices | No | boolean | False when omitted |
| apply_credits_to_recurring_invoices | No | boolean | False when omitted |
| next_invoice_number | No | integer | Minimum 1; may only be raised, never lowered |
| next_quote_number | No | integer | Minimum 1; may only be raised, never lowered |
| client_code_auto | No | boolean | False when omitted |
| client_code_prefix | No | string | Letters, digits and dashes, up to 10 characters, stored upper case; empty means C |
| next_client_code_number | No | integer | Minimum 1; may only be raised, never lowered |
curl -X PUT https://api.rebill.co.za/account \
-H "Authorization: Bearer sk_your_secret_key" \
-H "Content-Type: application/json" \
-d '{
"business_name": "Acme Corp Pty Ltd",
"business_email": "accounts@acme.co.za",
"business_phone": "+27821234567",
"vat_number": "4123456789",
"invoice_notes": "Thank you for your business.",
"hide_quote_status": true,
"hide_quote_validity": false,
"client_code_auto": true,
"client_code_prefix": "C",
"next_client_code_number": 118
}'Response (200 OK): the saved account in the same shape as GET /me.
Validation problems return 400 Bad Request with the field name and reason, for example a next_invoice_number lower than the current one, a timezone that is not a known IANA zone, or a client_code_prefix with other characters. Premium only settings on the free plan return 402 Payment Required.
Booleans default to false
Most true or false settings are plain booleans in the request: leaving one out switches it off. Menu visibility, quote layout, PDF attachments, reminders, auto convert, late fees, credit application and automatic client codes all work this way. Start from the GET /me response so nothing is switched off by accident.