Skip to Content
Odoo Menú
  • Registra entrada
  • Prova-ho gratis
  • Aplicacions
    Finances
    • Comptabilitat
    • Facturació
    • Despeses
    • Full de càlcul (IA)
    • Documents
    • Signatura
    Vendes
    • CRM
    • Vendes
    • Punt de venda per a botigues
    • Punt de venda per a restaurants
    • Subscripcions
    • Lloguer
    Imatges de llocs web
    • Creació de llocs web
    • Comerç electrònic
    • Blog
    • Fòrum
    • Xat en directe
    • Aprenentatge en línia
    Cadena de subministrament
    • Inventari
    • Fabricació
    • PLM
    • Compres
    • Manteniment
    • Qualitat
    Recursos humans
    • Empleats
    • Reclutament
    • Absències
    • Avaluacions
    • Recomanacions
    • Flota
    Màrqueting
    • Màrqueting Social
    • Màrqueting per correu electrònic
    • Màrqueting per SMS
    • Esdeveniments
    • Automatització del màrqueting
    • Enquestes
    Serveis
    • Projectes
    • Fulls d'hores
    • Servei de camp
    • Suport
    • Planificació
    • Cites
    Productivitat
    • Converses
    • Artificial Intelligence
    • IoT
    • VoIP
    • Coneixements
    • WhatsApp
    Aplicacions de tercers Odoo Studio Plataforma d'Odoo al núvol
  • Sectors
    Comerç al detall
    • Llibreria
    • Botiga de roba
    • Botiga de mobles
    • Botiga d'ultramarins
    • Ferreteria
    • Botiga de joguines
    Food & Hospitality
    • Bar i pub
    • Restaurant
    • Menjar ràpid
    • Guest House
    • Distribuïdor de begudes
    • Hotel
    Immobiliari
    • Agència immobiliària
    • Estudi d'arquitectura
    • Construcció
    • Property Management
    • Jardineria
    • Associació de propietaris de béns immobles
    Consultoria
    • Empresa comptable
    • Partner d'Odoo
    • Agència de màrqueting
    • Bufet d'advocats
    • Captació de talent
    • Auditoria i certificació
    Fabricació
    • Textile
    • Metal
    • Mobles
    • Menjar
    • Brewery
    • Regals corporatius
    Salut i fitness
    • Club d'esport
    • Òptica
    • Centre de fitness
    • Especialistes en benestar
    • Farmàcia
    • Perruqueria
    Trades
    • Servei de manteniment
    • Hardware i suport informàtic
    • Sistemes d'energia solar
    • Shoe Maker
    • Serveis de neteja
    • Instal·lacions HVAC
    Altres
    • Nonprofit Organization
    • Agència del medi ambient
    • Lloguer de panells publicitaris
    • Fotografia
    • Lloguer de bicicletes
    • Distribuïdors de programari
    Browse all Industries
  • Comunitat
    Aprèn
    • Tutorials
    • Documentació
    • Certificacions
    • Formació
    • Blog
    • Pòdcast
    Potenciar l'educació
    • Programa educatiu
    • Scale-Up! El joc empresarial
    • Visita Odoo
    Obtindre el programari
    • Descarregar
    • Comparar edicions
    • Novetats de les versions
    Col·laborar
    • GitHub
    • Fòrum
    • Esdeveniments
    • Traduccions
    • Converteix-te en partner
    • Services for Partners
    • Registra la teva empresa comptable
    Obtindre els serveis
    • Troba un partner
    • Troba un comptable
    • Contacta amb un expert
    • Serveis d'implementació
    • Referències del client
    • Suport
    • Actualitzacions
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Programar una demo
  • Preus
  • Ajuda
You need to be registered to interact with the community.
All Posts People Badges
Etiquetes (View all)
odoo accounting v14 pos v15
About this forum
You need to be registered to interact with the community.
All Posts People Badges
Etiquetes (View all)
odoo accounting v14 pos v15
About this forum
Ajuda

Need of Autonomous B2B or B2C Billing Selection

Subscriure's

Get notified when there's activity on this post

This question has been flagged
B2BinvoiceaddressB2CBilling
1 Respondre
305 Vistes
Avatar
Admin Samadeva

Is Odoo unable to provide Autonomous B2B or B2C Billing Selection for portal customer?

A customer should be able to autonomously choose whether an order is invoiced as a private individual (B2C) or as their own company (B2B) by selecting the appropriate billing entity during checkout.

Current Behavior in Odoo 18

In the standard Odoo 18 website, a visitor cannot create an account with is_company=True, nor can they create an independent company billing address from /shop/address.

The website checkout only manages:

  • contacts (is_company=False),

  • child addresses belonging to an already established commercial entity.

Creating a new company partner (is_company=True) is only performed through create_company() in the back-office. Therefore, the website does not allow a customer to create a new company billing entity during the checkout flow (/shop/checkout → /shop/address).

Consequently, choosing between personal billing and company billing is currently an account-level decision (or a guest checkout decision), not a billing-address decision.

The checkout only allows the user to select postal addresses belonging to the commercial entity already associated with the current session.

Although the invoice uses the selected billing address as its partner_id, the actual debtor remains the corresponding commercial_partner_id inherited from the partner hierarchy.

As a result, changing the billing address on /shop/checkout only changes the name and address printed on the PDF invoice. It does not necessarily change the accounting debtor, provided the selected address still belongs to the same commercial_partner_id.

Relevant Odoo Fields
res.partner.commercial_partner_id

Identifies the legal/commercial entity used for:

  • VAT management

  • receivable accounting

  • reconciliation

  • commercial hierarchy (company / contacts / addresses)

sale.order

Separates:

  • partner_id → the customer placing the order

  • partner_invoice_id → the billing address

Only partner_invoice_id is propagated to the invoice.

account.move

Uses:

  • partner_id for displaying the invoice address,

  • commercial_partner_id (inherited from that address) for accounting purposes, including receivables and reconciliation.

Practical Examples
Case A — B2C Customer
Jean Dupont
(contact, no parent)
commercial_partner_id = Jean Dupont

Sales Order

partner_id = Jean
partner_invoice_id = Jean

Invoice

partner_id = Jean
commercial_partner_id = Jean

PDF

Jean Dupont
Case B — B2B Contact, Invoice Address Under the Contact
ABC Ltd (is_company=True)
└── Jean Dupont (contact)

Sales Order

partner_id = Jean
partner_invoice_id = Jean's invoice child address

Invoice

partner_id = invoice address
commercial_partner_id = ABC Ltd

PDF

ABC Ltd
Jean Dupont

(or another layout depending on the address formatting)

Accounting

Receivable and reconciliation are posted against ABC Ltd.
Case C — B2B Contact, Invoice Issued Directly to the Company

Sales Order

partner_id = Jean

Invoice

partner_id = ABC Ltd
commercial_partner_id = ABC Ltd

PDF

ABC Ltd

Accounting

Receivable and reconciliation are posted against ABC Ltd.
Case D — Guest Checkout Using company_name (without is_company=True)

Partner

Jean Dupont
company_name = "ABC Ltd"
is_company = False
commercial_partner_id = Jean Dupont

There is no ORM company partner representing "ABC Ltd".

PDF

ABC Ltd
Jean Dupont

may be displayed.

Accounting

Receivable and reconciliation remain attached to Jean Dupont,
not to ABC Ltd.

Summary

The native Odoo 18 checkout does not allow the customer to switch the legal billing entity during checkout.

The customer may choose which billing address to use, but not which commercial entity (commercial_partner_id) will become the legal debtor.

Supporting a true "Bill me as a private individual" vs "Bill me as my company" workflow therefore requires a customization capable of creating or selecting distinct commercial partners (is_company=True) and assigning the appropriate commercial_partner_id before the invoice is generated. How to handle this ?


------- EN FRANÇAIS ------

ODOO NE PERMET PAS LE CHOIX AUTONOME DE FACTURATION B2B ou B2C !??

Un client devrait pouvoir de facon autonome, sur son portal web, pouvoir être facturé en tant que particulier OU en tant que sa micro-entreprise (Adresse de facturation):

Actuellement (sur Odoo18): sur le site web natif, un visiteur ne peut pas créer un login is_company=True ni une adresse de facturation « entreprise autonome » via /shop/address. Le web gère des contacts (is_company=False) et des adresses enfants sous une entité commerciale déjà fixée par le compte ou le panier invité. La création d’une société distincte (is_company=True) passe par create_company() en back-office — le site web ne permet pas au client de créer une telle adresse de facturation sur la page /shop/checkout (-> /shop/address).

Quand Odoo génère une facture, il utilise commercial_partner_id pour déterminer l'entité commerciale "de référence". Ce champ remonte automatiquement à la racine de la hiérarchie ( parent _ id → parent id → ...). L'adresse de facturation choisie par le client ( partner_invoice_id ) ne fait que modifier l'adresse postale, pas l'entité commerciale. C'est pour ça que le nom affiché devient Jean Dupont, ABC SARL : Odoo concatène le nom de l'enfant ET le nom commercial du parent.

Le choix de facturation « personnel vs entreprise » est un choix de compte (ou de parcours invité), pas un choix d’adresse de facturation au checkout. Le checkout ne gère que des adresses postales dans l’arbre de l’entité commerciale déjà attachée à la session ; la facture prend l’adresse choisie comme partner_id, mais l’entité débitrice (commercial_partner_id) reste celle de cette adresse dans la hiérarchie partenaire.


Sur la page web shop/checkout, changer l’adresse de facturation modifie le nom/adresse PDF mais pas nécessairement l’entité débitrice — tant que la nouvelle adresse reste sous le même commercial_partner_id dans l’arbre partenaire.


Du point de vue des champs concernés:


  • res.partner.commercial_partner_id : identifie l’entité économique (société ou particulier) à laquelle rattacher TVA, crédit, lettrage et hiérarchie contacts/adresses.

  • sale.order : sépare le client (partner_id) de l’adresse facturée (partner_invoice_id) ; seul le second part en facture.

  • account.move : affiche l’adresse via partner_id, mais comptabilise et lettre via commercial_partner_id hérité de cette adresse.


Exemples concrets :


Cas A — Particulier B2C

Jean Dupont (contact, pas de parent)

commercial_partner_id = Jean Dupont

Commande : partner_id = Jean, partner_invoice_id = Jean

Facture : partner_id = Jean, commercial_partner_id = Jean

Nom PDF : "Jean Dupont"


Cas B — Contact B2B, facture sur le contact

ABC SARL (is_company=True)

└── Jean Dupont (contact)

Commande : partner_id = Jean, partner_invoice_id = adresse invoice enfant de Jean

Facture : partner_id = adresse invoice

commercial_partner_id = ABC SARL

Nom PDF : "ABC SARL, Jean Dupont" (ou variante selon adresse)

Lettrage : sur ABC SARL


Cas C — Contact B2B, facture sur la société

Commande : partner_id = Jean

Facture : partner_id = ABC SARL

commercial_partner_id = ABC SARL

Nom PDF : "ABC SARL"

Lettrage : sur ABC SARL


Cas D — Invité avec company_name (sans is_company=True)

Partenaire : Jean Dupont, company_name="ABC SARL", is_company=False

commercial_partner_id = Jean Dupont (pas ABC SARL en tant qu’entité ORM)

Nom PDF : peut afficher "ABC SARL, Jean Dupont"

Lettrage : sur Jean Dupont (particulier)

---------

Odoo 18 avec son tunnel d'achat natif ne permet pas au client de changer l'entité juridique de facturation pendant le processus de commande.

Le client peut choisir l'adresse de facturation à utiliser, mais pas l'entité commerciale (commercial_partner_id) qui deviendra le débiteur légal de la facture.

La prise en charge d'un véritable choix « Me facturer en tant que particulier » ou « Me facturer au nom de mon entreprise » nécessite donc une personnalisation capable de créer ou de sélectionner des partenaires commerciaux distincts (is_company=True) et d'affecter le commercial_partner_id approprié avant la génération de la facture.


Comment répondre à ce besoin ?





0
Avatar
Descartar
Avatar
Zehntech Technologies Inc.
Best Answer

Hello, 

You've correctly identified a real limitation in Odoo 18's standard checkout flow.

To confirm your analysis: no, Odoo 18 does not support autonomous B2B/B2C billing selection at checkout out of the box.

  • Changing partner_invoice_id at checkout only affects the printed address on the PDF.
  • The accounting debtor is always determined by commercial_partner_id, which is fixed by the partner hierarchy established at login or guest checkout.
  • Creating a new is_company=True partner through the portal is not available natively.

To support a genuine "Bill me as an individual / Bill me as my company" selection, a custom module needs to handle three things:

  1. Billing type selector at checkout - a toggle or radio button (Personal vs. Company) added to the checkout step.
  2. Company partner creation or selection - if the customer picks "Company," they should be able to select an existing linked company or create a new is_company=True partner on the spot.
  3. Reassign commercial_partner_id on the sale order before invoice generation, so the correct legal entity becomes the accounting debtor, not just the display address.

One important point: the commercial_partner_id update must happen before invoice creation, not just at checkout, to ensure VAT handling, receivables, and reconciliation are posted against the correct entity. If you also need VAT number validation per billing entity or guest checkout support for the same flow, that adds some additional scope.

This is a well-defined customization. The core logic is straightforward; the edge cases around guest checkout and the partner hierarchy are where most of the complexity lives.

Hope this works for you! If you need any help implementing this or want a more optimized approach, feel free to reach out for further discussion.

Regards, 

Zehntech Technologies Inc. 

santosh.sekwadia@zehntech.com

1
Avatar
Descartar
Enjoying the discussion? Don't just read, join in!

Create an account today to enjoy exclusive features and engage with our awesome community!

Registrar-se
Related Posts Respostes Vistes Activitat
how to show including Vat and Excluding VAT.
B2B B2C
Avatar
Avatar
Avatar
Avatar
Avatar
6
de gen. 25
11236
Ecommerce : How to display prices tax included for B2C and excluded for B2B ( Only possible until V16 ) Solved
ecommerce quickstart B2B B2C Quickstart
Avatar
Avatar
Avatar
Avatar
Avatar
5
de set. 25
9087
Same Product Stock Available for B2B and B2C
inventory allocation distribution B2B B2C
Avatar
0
de nov. 24
1774
Seeking Advice: Developing a B2B2C Platform for Manufacturers, Distributors, and Customers
ecommerce helpme B2B B2C odoo17
Avatar
0
de maig 24
2988
Shipping method with different prices rules for B2C and B2B
B2B B2C Rules KeepItSimple ShippingMethod
Avatar
0
de set. 22
4318
Community
  • Tutorials
  • Documentació
  • Fòrum
Codi obert
  • Descarregar
  • GitHub
  • Runbot
  • Traduccions
Serveis
  • Allotjament a Odoo.sh
  • Suport
  • Actualització
  • Desenvolupaments personalitzats
  • Educació
  • Troba un comptable
  • Troba un partner
  • Converteix-te en partner
Sobre nosaltres
  • La nostra empresa
  • Actius de marca
  • Contacta amb nosaltres
  • Llocs de treball
  • Esdeveniments
  • Pòdcast
  • Blog
  • Clients
  • Informació legal • Privacitat
  • Seguretat
الْعَرَبيّة Català 简体中文 繁體中文 (台灣) Čeština Dansk Nederlands English Suomi Français Deutsch हिंदी Bahasa Indonesia Italiano 日本語 한국어 (KR) Lietuvių kalba Język polski Português (BR) română русский язык Slovenský jazyk Slovenščina Español (América Latina) Español Svenska ภาษาไทย Türkçe українська Tiếng Việt

Odoo és un conjunt d'aplicacions empresarials de codi obert que cobreix totes les necessitats de la teva empresa: CRM, comerç electrònic, comptabilitat, inventari, punt de venda, gestió de projectes, etc.

La proposta única de valor d'Odoo és ser molt fàcil d'utilitzar i estar totalment integrat, ambdues alhora.

Website made with

Odoo Experience on YouTube

1. Use the live chat to ask your questions.
2. The operator answers within a few minutes.

Live support on Youtube
Watch now