Faits:
Faits:
A. Le Parquet d'Augsbourg a adressé à l'Office fédéral de la justice (OFJ) plusieurs demandes d'entraide judiciaire pour les besoins d'une enquête dirigée contre les dénommés C._, D._, E._ et autres, pour soustraction d'impôt et violation de la loi sur le commerce extérieur. Entre 1994 et 1995, des cigarettes de provenances diverses auraient été importées en Suisse, réassorties puis expédiées (avec de faux documents servant à faire croire que la marchandise était destinée à la Bulgarie), via divers pays, à destination du Monténégro, puis de l'Italie. Le but était d'alimenter le marché noir européen et de renflouer les caisses de la Serbie-Monténégro, alors frappée de l'embargo prononcé par les Nations-Unies. Au total, 2 milliards de DM auraient ainsi échappé au fisc européen. L'autorité requérante mentionnait les diverses entreprises liées à ce trafic. L'entraide judiciaire de la Suisse avait déjà été requise et accordée à plusieurs reprises dans ce cadre (cf. notamment l'arrêt 1A.247/2000 du 27 novembre 2000, concernant la demande initiale du 18 septembre 1998, et l'arrêt 1A.203/2003 du 11 novembre 2003 concernant le complément du 23 avril 2002).
Le 15 octobre 2002 le Procureur d'Augsbourg a présenté une demande complémentaire visant à consulter, avec l'inspecteur principal des douanes, et, le cas échéant, à lever copie du dossier d'une procédure pénale administrative ouverte en Suisse pour violation de l'embargo, entre 1992 et 1995, et relative à des faits identiques à ceux poursuivis en Allemagne.
Le 7 juillet 2003, la Direction générale des douanes (DGD), chargée de l'exécution de cette demande, est entrée en matière. Les faits décrits étaient constitutifs, en droit suisse, d'escroquerie fiscale et de violation de la loi fédérale sur les douanes. Cette décision a été notifiée, en particulier, à X._ SA, qui avait fait l'objet le 17 octobre 1995 d'une perquisition auprès de sa succursale de Genève, et de la saisie des pièces relatives à la société Z._. Le 18 août 2003, X._ SA s'est opposée à la consultation du dossier par l'autorité étrangère: la demande du 15 octobre 2002 n'était pas suffisamment étayée pour en déduire l'existence d'une escroquerie fiscale. L'autorité requérante devait être invitée à compléter sa démarche.
Le 7 juillet 2003, la Direction générale des douanes (DGD), chargée de l'exécution de cette demande, est entrée en matière. Les faits décrits étaient constitutifs, en droit suisse, d'escroquerie fiscale et de violation de la loi fédérale sur les douanes. Cette décision a été notifiée, en particulier, à X._ SA, qui avait fait l'objet le 17 octobre 1995 d'une perquisition auprès de sa succursale de Genève, et de la saisie des pièces relatives à la société Z._. Le 18 août 2003, X._ SA s'est opposée à la consultation du dossier par l'autorité étrangère: la demande du 15 octobre 2002 n'était pas suffisamment étayée pour en déduire l'existence d'une escroquerie fiscale. L'autorité requérante devait être invitée à compléter sa démarche.
B. Par ordonnance du 30 octobre 2003, la DGD a prononcé la clôture de la procédure. Les enquêteurs étrangers ont été autorisés à consulter les documents relatifs à la société Z._ saisis le 17 octobre 1995 en mains de X._ SA et, éventuellement, à en recevoir des photocopies. Cette pièce pouvait être déterminante pour la procédure pénale étrangère.
B. Par ordonnance du 30 octobre 2003, la DGD a prononcé la clôture de la procédure. Les enquêteurs étrangers ont été autorisés à consulter les documents relatifs à la société Z._ saisis le 17 octobre 1995 en mains de X._ SA et, éventuellement, à en recevoir des photocopies. Cette pièce pouvait être déterminante pour la procédure pénale étrangère.
C. X._ SA forme un recours de droit administratif contre cette dernière décision. Elle demande préalablement que la DGD soit invitée à produire les documents sur lesquels elle s'appuie pour pallier les insuffisances de la commission rogatoire. Principalement, elle demande l'annulation de la décision de clôture et le refus de transmettre les documents saisis le 17 octobre 1995. Subsidiairement, elle demande le renvoi de la cause à la DGD afin qu'elle invite l'autorité requérante à compléter l'exposé des faits, et qu'elle produise une traduction en français des dispositions pénales du droit allemand.
La DGD et l'OFJ concluent au rejet du recours.

Le Tribunal fédéral considère en droit:
Le Tribunal fédéral considère en droit:
1. Le Tribunal fédéral examine d'office et librement la recevabilité du recours de droit administratif (<ref-ruling> consid. 2 p. 456). En matière d'entraide judiciaire, celui-ci est ouvert contre la décision de clôture rendue par l'autorité fédérale d'exécution (art. 80g al. 1 de la loi fédérale sur l'entraide internationale en matière pénale - EIMP, RS 351.1), c'est à dire la décision par laquelle l'autorité, estimant avoir traité la demande totalement ou partiellement, statue sur l'octroi et l'étendue de l'entraide (<ref-law>).
1.1 La décision attaquée n'est pas à proprement parler une décision de transmission. Elle autorise la consultation du dossier de la procédure pénale administrative, et permet la levée de copies par les enquêteurs étrangers. Prise avant même la venue de ces enquêteurs, la décision attaquée s'apparente davantage à une décision d'entrée en matière contre laquelle il n'existe de recours qu'aux conditions restrictives de l'<ref-law>. Le but de la DGD était manifestement de rendre une décision de principe permettant aux enquêteurs étrangers d'emporter directement les documents qui les intéressent. Cette manière de procéder peut poser problème puisque l'étendue de l'entraide n'est pas encore définie à ce stade, et qu'il est difficile de se prononcer sur le respect du principe de la proportionnalité. D'un point de vue d'économie de procédure, la solution adoptée n'est pas non plus satisfaisante puisqu'il est possible que les enquêteurs étrangers renoncent en définitive à emporter des documents, faute d'intérêt. La solution adoptée ne serait assurément pas admissible si elle donnait l'accès général à l'ensemble d'une procédure: elle ne permettrait notamment pas aux personnes concernées de se prononcer de manière utile sur le tri des pièces à transmettre. En l'occurrence, la consultation, respectivement la levée de copies, est limitée aux documents saisis le 17 octobre 1995 en mains de la succursale de la recourante. Il est possible de se déterminer à ce stade sur la pertinence de ce moyen de preuve, et la recourante est en mesure de présenter ses objections, en particulier à propos du principe de la proportionnalité.
1.2 Pour le surplus, le recours est interjeté dans le délai utile, pour autant que l'on tient la décision attaquée pour finale (<ref-law>). La recourante, qui a fait l'objet d'une perquisition, puis d'une saisie, est personnellement et directement touchée au sens de l'<ref-law> (cf. l'<ref-law>). Elle a qualité pour recourir.
1.3 L'entraide judiciaire entre l'Allemagne et la Suisse est régie par la Convention européenne d'entraide judiciaire (CEEJ, RS 0.351.1) et par l'accord complémentaire conclu le 13 novembre 1969 entre les deux Etats (ci-après: l'accord, RS 0.351.913.61). Le droit interne, soit l'EIMP et son ordonnance d'exécution (OEIMP, RS 351.11), reste applicable aux questions qui ne sont pas réglées par les dispositions conventionnelles, ainsi que lorsqu'il permet l'octroi de l'entraide à des conditions plus favorables (<ref-ruling> consid. 1.1).
1.3 L'entraide judiciaire entre l'Allemagne et la Suisse est régie par la Convention européenne d'entraide judiciaire (CEEJ, RS 0.351.1) et par l'accord complémentaire conclu le 13 novembre 1969 entre les deux Etats (ci-après: l'accord, RS 0.351.913.61). Le droit interne, soit l'EIMP et son ordonnance d'exécution (OEIMP, RS 351.11), reste applicable aux questions qui ne sont pas réglées par les dispositions conventionnelles, ainsi que lorsqu'il permet l'octroi de l'entraide à des conditions plus favorables (<ref-ruling> consid. 1.1).
2. La recourante invoque l'<ref-law>, ainsi que l'art. X de l'accord. Elle se plaint de ne pas avoir reçu de traduction en français de la demande d'entraide, ainsi que des dispositions pénales du droit allemand, alors que ni elle-même, ni son avocat ne maîtrisent l'allemand.
2.1 L'argument est manifestement mal fondé. Conformément à la réserve de la Suisse à propos de l'art. 16 par. 2 CEEJ, l'<ref-law> exige simplement que les demandes soient présentées dans une des langues officielles que sont le français, l'allemand ou l'italien, sans aucune obligation de fournir une traduction dans une autre langue. L'art. IIIA let. b de l'accord prévoit une traduction des passages essentiels dans la langue officielle parlée au lieu du destinataire; cette disposition se rapporte toutefois aux actes visés au titre III (art. 7) CEEJ, et non aux commissions rogatoires mentionnées au titre II. Quant à l'art. X de l'accord, il prévoit que les demandes sont rédigées dans la langue de l'Etat requérant, et qu'il ne peut être exigé de traduction.
2.2 Citant Zimmermann (La coopération judiciaire internationale en matière pénale, Berne 1999, n° 161, note 304), la recourante prétend qu'une traduction devrait être produite lorsque la demande d'entraide concerne un canton francophone ou italophone. Cette opinion est toutefois erronée: dans les observations à propos de l'art. X de l'accord, il est simplement prévu que les demandes émanant d'un canton où la langue officielle est le français ou l'italien sont rédigées dans ces langues. Pour le surplus, la recourante n'invoque aucune règle de droit interne qui obligerait l'autorité d'exécution (et en particulier une autorité fédérale comme la DGD) de traduire les pièces du dossier. La jurisprudence citée par la recourante concerne des demandes présentées dans des langues autres que les langues officielles. Au surplus, à l'instar des agents de la Confédération et des magistrats fédéraux, les avocats exerçant en Suisse une activité dans le domaine de l'entraide judiciaire sont censés connaître, au moins de manière passive, le français, l'allemand et l'italien (arrêt 1A.37/2001 du 12 juillet 2001). La demande complémentaire ne comporte que quelques pages et pouvait, le cas échéant, être traduite sans difficulté ni coûts excessifs.
2.2 Citant Zimmermann (La coopération judiciaire internationale en matière pénale, Berne 1999, n° 161, note 304), la recourante prétend qu'une traduction devrait être produite lorsque la demande d'entraide concerne un canton francophone ou italophone. Cette opinion est toutefois erronée: dans les observations à propos de l'art. X de l'accord, il est simplement prévu que les demandes émanant d'un canton où la langue officielle est le français ou l'italien sont rédigées dans ces langues. Pour le surplus, la recourante n'invoque aucune règle de droit interne qui obligerait l'autorité d'exécution (et en particulier une autorité fédérale comme la DGD) de traduire les pièces du dossier. La jurisprudence citée par la recourante concerne des demandes présentées dans des langues autres que les langues officielles. Au surplus, à l'instar des agents de la Confédération et des magistrats fédéraux, les avocats exerçant en Suisse une activité dans le domaine de l'entraide judiciaire sont censés connaître, au moins de manière passive, le français, l'allemand et l'italien (arrêt 1A.37/2001 du 12 juillet 2001). La demande complémentaire ne comporte que quelques pages et pouvait, le cas échéant, être traduite sans difficulté ni coûts excessifs.
3. La recourante considère que la demande complémentaire du 15 octobre 2002 ne précise ni la nature, ni le lieu, ni la date des infractions alléguées, l'Etat requérant se bornant à faire valoir son intérêt pour une procédure ouverte en Suisse, afin d'en comparer les résultats avec ceux de ses propres investigations. La DGD aurait accordé l'entraide en se fondant sur des faits apparus dans une procédure d'entraide de 1998, qui ne figurent pas dans la commission rogatoire, et auxquels la recourante n'a pas eu accès, contrairement aux exigences de l'<ref-law>. La recourante conclut préalablement à ce que les pièces sur lesquelles se fonde la DGD soient versées au dossier. Cette question formelle doit être examinée en premier lieu.
3.1 Selon l'<ref-law>, qui concrétise en matière d'entraide judiciaire le droit d'être entendu découlant de l'art. 29 al. 2 Cst., l'ayant droit peut accéder au dossier. Ce droit s'étend à tous les éléments pertinents du dossier. En fait notamment partie la demande d'entraide, pièce centrale de la procédure dont la consultation ne peut en principe pas être refusée.
3.2 En l'occurrence, la commission rogatoire du 15 octobre 2002 ne comporte pas d'exposé suffisant. L'autorité requérante fait allusion à la procédure dirigée contre E._ pour trafic de cigarettes; elle mentionne l'existence et l'objet de la procédure ouverte en Suisse, rappelle que de nombreuses personnes vivant en Suisse font l'objet de poursuites en Allemagne pour des faits similaires et fait état de son intérêt pour la consultation du dossier. Les infractions poursuivies en Allemagne ne sont pas décrites.
Toutefois, il est manifeste que cette commission rogatoire est complémentaire à de précédentes demandes d'entraide. L'autorité requérante n'en donne pas les coordonnées exactes, mais la DGD, dans son ordonnance d'entrée en matière (ch. 2) et dans son ordonnance de clôture (ch. 9), mentionne l'existence de ces précédentes demandes, qui ont déjà été exécutées. Elle précise aussi que le Tribunal fédéral a déjà été appelé à statuer sur l'admissibilité de l'entraide judiciaire, et s'est prononcé sur l'existence d'une escroquerie fiscale (ch. 4 in fine); les coordonnées de cet arrêt sont précisées. A la lecture de l'arrêt du Tribunal fédéral (que la recourante pouvait consulter sur Internet, ou dont elle pouvait requérir un exemplaire auprès de la DGD), il apparaissait évident que la commission rogatoire avait été précédée d'autres demandes dûment motivées.
Dans sa décision d'entrée en matière, la DGD expose également dans le détail l'ensemble des agissements qui font l'objet des poursuites en Allemagne, sur la base des éléments fournis dans les précédentes demandes d'entraide. Ces indications permettent de comprendre de manière suffisante le cadre dans lequel s'inscrit la demande complémentaire. La recourante ne saurait ainsi soupçonner l'existence d'un "dossier occulte" dont l'existence lui aurait été cachée. Un minimum d'attention de sa part lui aurait permis de connaître l'origine des informations figurant dans l'ordonnance d'entrée en matière et, le cas échéant, d'en exiger la production.
3.3 L'argument relatif à la motivation de la commission rogatoire doit lui aussi être écarté. Comme cela est relevé ci-dessus, la demande d'entraide se réfère à de précédentes démarches de l'autorité requérante, dans le cadre d'un trafic de cigarettes dont les modalités ont été exposées dans le détail, conformément aux exigences de l'art. 14 CEEJ. Le reconditionnement de la marchandise, l'intervention de nombreux intermédiaires, l'usage de faux documents et un transport clandestin et rapide par bateaux auraient permis de réintroduire les cigarettes sur le marché noir européen, et d'améliorer la situation économique en Serbie-Monténégro, alors frappée d'embargo.
3.4 En ce qui concerne l'escroquerie fiscale et le principe de la double incrimination, ces questions ont déjà été examinées par le Tribunal fédéral dans son arrêt du 27 novembre 2000, mentionné à plusieurs reprises par la DGD au cours de la procédure. Le Tribunal fédéral a en particulier considéré que l'intervention de nombreuses sociétés de divers pays, les déplacements de marchandises et l'usage de fausses factures et documents douaniers, avaient permis de donner l'illusion d'un transport régulier à destination de la Bulgarie et de camoufler le retour de la marchandise en Europe. Cette construction sophistiquée destinée à tromper, à plusieurs reprises, les autorités douanières des Etats européens, était constitutive d'astuce (consid. 4c). L'arrêt précité considère également que le transport de cigarettes à destination du Monténégro serait constitutif, en droit suisse, de trafic prohibé (art. 76 de la loi fédérale sur les douanes - LD, RS 631.0), compte tenu des dispositions relatives à l'embargo contre la Yougoslavie (art. 4 de l'ordonnance du 3 octobre 1994 instituant des mesures économiques à l'encontre de la Yougoslavie - Serbie et Monténégro - et d'autres régions contrôlées par les Serbes, et art. 3 de l'ordonnance du 3 juin 1992 instituant des sanctions économiques à l'encontre de la Yougoslavie - Serbie et Monténégro -, ainsi que les renvois de ces ordonnances aux sanctions pénales de la LD).
3.4 En ce qui concerne l'escroquerie fiscale et le principe de la double incrimination, ces questions ont déjà été examinées par le Tribunal fédéral dans son arrêt du 27 novembre 2000, mentionné à plusieurs reprises par la DGD au cours de la procédure. Le Tribunal fédéral a en particulier considéré que l'intervention de nombreuses sociétés de divers pays, les déplacements de marchandises et l'usage de fausses factures et documents douaniers, avaient permis de donner l'illusion d'un transport régulier à destination de la Bulgarie et de camoufler le retour de la marchandise en Europe. Cette construction sophistiquée destinée à tromper, à plusieurs reprises, les autorités douanières des Etats européens, était constitutive d'astuce (consid. 4c). L'arrêt précité considère également que le transport de cigarettes à destination du Monténégro serait constitutif, en droit suisse, de trafic prohibé (art. 76 de la loi fédérale sur les douanes - LD, RS 631.0), compte tenu des dispositions relatives à l'embargo contre la Yougoslavie (art. 4 de l'ordonnance du 3 octobre 1994 instituant des mesures économiques à l'encontre de la Yougoslavie - Serbie et Monténégro - et d'autres régions contrôlées par les Serbes, et art. 3 de l'ordonnance du 3 juin 1992 instituant des sanctions économiques à l'encontre de la Yougoslavie - Serbie et Monténégro -, ainsi que les renvois de ces ordonnances aux sanctions pénales de la LD).
4. La recourante invoque enfin le principe de la proportionnalité. La DGD aurait omis d'indiquer en quoi les pièces saisies le 17 octobre 1995 pourraient être utiles à l'enquête. Faute d'une connaissance suffisante du dossier, la recourante ne serait pas en mesure de comprendre quelle relation la DGD aurait établi entre la société Z._ et le trafic poursuivi en Allemagne.
4.1 Le principe de la proportionnalité empêche d'une part l'autorité requérante de demander des mesures inutiles à son enquête et, d'autre part, l'autorité d'exécution d'aller au-delà de la mission qui lui est confiée (<ref-ruling> consid. 3a). L'autorité suisse requise s'impose une grande retenue lorsqu'elle examine le respect de ce principe, faute de moyens qui lui permettraient de se prononcer sur l'opportunité de l'administration des preuves. Le juge de l'entraide doit lui aussi se borner à examiner si les renseignements à transmettre présentent, prima facie, un rapport avec les faits motivant la demande d'entraide. Il ne doit exclure de la transmission que les documents n'ayant manifestement aucune utilité possible pour les enquêteurs étrangers (examen limité à l'utilité "potentielle", <ref-ruling> consid. 2c p. 371).
4.2 La mission décrite dans la demande complémentaire se rapporte à une procédure ouverte en Suisse pour les même faits que ceux qui sont poursuivis en Allemagne, soit un trafic de cigarettes en violation de l'embargo décrété contre l'Ex-Yougoslavie. L'autorité requérante rappelle que A._ et le dénommé F._ (dont A._ était le bras droit), ainsi que leurs sociétés, font notamment partie des personnes visées par l'enquête. Les documents saisis en main de la recourante consistent pour l'essentiel en un contrat entre une société dirigée par F._ et représentée par A._, et Z._, selon lequel cette dernière devait organiser le transport par avion de cigarettes entre la République tchèque et le Monténégro. L'utilité potentielle de ce document ne peut par conséquent être niée, dès lors qu'il n'est pas totalement exclu que les opérations concernées puissent avoir un rapport avec le trafic international qui fait l'objet de l'enquête en Allemagne.
4.2 La mission décrite dans la demande complémentaire se rapporte à une procédure ouverte en Suisse pour les même faits que ceux qui sont poursuivis en Allemagne, soit un trafic de cigarettes en violation de l'embargo décrété contre l'Ex-Yougoslavie. L'autorité requérante rappelle que A._ et le dénommé F._ (dont A._ était le bras droit), ainsi que leurs sociétés, font notamment partie des personnes visées par l'enquête. Les documents saisis en main de la recourante consistent pour l'essentiel en un contrat entre une société dirigée par F._ et représentée par A._, et Z._, selon lequel cette dernière devait organiser le transport par avion de cigarettes entre la République tchèque et le Monténégro. L'utilité potentielle de ce document ne peut par conséquent être niée, dès lors qu'il n'est pas totalement exclu que les opérations concernées puissent avoir un rapport avec le trafic international qui fait l'objet de l'enquête en Allemagne.
5. Sur le vu de ce qui précède, le recours de droit administratif doit être rejeté, dans la mesure où il est recevable. Conformément à l'art. 156 al. 1 OJ, un émolument judiciaire est mis à la charge de la recourante.

Par ces motifs, le Tribunal fédéral prononce:
Par ces motifs, le Tribunal fédéral prononce:
1. Le recours est rejeté dans la mesure où il est recevable.
1. Le recours est rejeté dans la mesure où il est recevable.
2. Un émolument judiciaire de 3000 fr. est mis à la charge de la recourante.
2. Un émolument judiciaire de 3000 fr. est mis à la charge de la recourante.
3. Le présent arrêt est communiqué en copie au mandataire de la recourante et à la Direction générale des douanes, ainsi qu'à l'Office fédéral de la justice (B 112 469/02).
Lausanne, le 27 janvier 2004
Au nom de la Ire Cour de droit public
du Tribunal fédéral suisse
Le président: Le greffier: