{"id":371361,"date":"2026-09-24T06:35:43","date_gmt":"2026-09-24T06:35:43","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/csv-exporter-for-australia-post\/"},"modified":"2026-09-24T09:46:05","modified_gmt":"2026-09-24T09:46:05","slug":"bloodweb-csv-exporter-for-australia-post","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/bloodweb-csv-exporter-for-australia-post\/","author":23568236,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"4.3.0","stable_tag":"4.3.0","tested":"7.1.2","requires":"5.0","requires_php":"7.4","requires_plugins":null,"header_name":"Bloodweb CSV Exporter for Australia Post","header_author":"Jack Ewers \/ Bloodweb","header_description":"Turns selected WooCommerce orders into native Australia Post Domestic and International bulk shipping CSVs, with configurable sender, package and customs defaults, an Orders bulk action and a single-order export action.","assets_banners_color":"667c8d","last_updated":"2026-09-24 09:46:05","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/bloodweb.net\/plugins\/bloodweb-csv-exporter-for-australia-post","header_author_uri":"https:\/\/jackewers.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":52,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"4.3.0":{"tag":"4.3.0","author":"bloodweb","date":"2026-09-24 09:46:05","revision":3710988}},"upgrade_notice":{"4.2.0":"<p>Renamed, so the plugin folder changed: deactivate and delete the old copy\nbefore activating this one. The fallback package weight is now a minimum, so\norders lighter than it export that minimum. Settings carry over; set it to 0\nto keep exporting summed product weights.<\/p>","4.0.2":"<p>International exports now need an item description, HS tariff code and EDN.\nStores that have already saved their settings keep their values.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3710604,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3710604,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3710604,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3710604,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["4.3.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3710604,"resolution":"1","location":"assets","locale":"","width":210,"height":364},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3710604,"resolution":"2","location":"assets","locale":"","width":795,"height":143},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3710604,"resolution":"3","location":"assets","locale":"","width":1259,"height":712},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3710604,"resolution":"4","location":"assets","locale":"","width":1314,"height":83}},"screenshots":{"1":"The Export AusPost manifest bulk action on the WooCommerce Orders screen.","2":"The download notice, offering a Domestic and an International manifest.","3":"The settings screen under WooCommerce &gt; Settings &gt; Shipping.","4":"A domestic manifest opened in a spreadsheet."}},"plugin_section":[],"plugin_tags":[9195,567,1859,3546,286],"plugin_category":[45,59],"plugin_contributors":[282408],"plugin_business_model":[],"class_list":["post-371361","plugin","type-plugin","status-publish","hentry","plugin_tags-australia-post","plugin_tags-csv","plugin_tags-export","plugin_tags-shipping","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_category-utilities-and-tools","plugin_contributors-bloodweb","plugin_committers-bloodweb"],"banners":{"banner":"https:\/\/ps.w.org\/bloodweb-csv-exporter-for-australia-post\/assets\/banner-772x250.png?rev=3710604","banner_2x":"https:\/\/ps.w.org\/bloodweb-csv-exporter-for-australia-post\/assets\/banner-1544x500.png?rev=3710604","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/bloodweb-csv-exporter-for-australia-post\/assets\/icon-128x128.png?rev=3710604","icon_2x":"https:\/\/ps.w.org\/bloodweb-csv-exporter-for-australia-post\/assets\/icon-256x256.png?rev=3710604","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/bloodweb-csv-exporter-for-australia-post\/assets\/screenshot-1.png?rev=3710604","caption":"The Export AusPost manifest bulk action on the WooCommerce Orders screen."},{"src":"https:\/\/ps.w.org\/bloodweb-csv-exporter-for-australia-post\/assets\/screenshot-2.png?rev=3710604","caption":"The download notice, offering a Domestic and an International manifest."},{"src":"https:\/\/ps.w.org\/bloodweb-csv-exporter-for-australia-post\/assets\/screenshot-3.png?rev=3710604","caption":"The settings screen under WooCommerce &gt; Settings &gt; Shipping."},{"src":"https:\/\/ps.w.org\/bloodweb-csv-exporter-for-australia-post\/assets\/screenshot-4.png?rev=3710604","caption":"A domestic manifest opened in a spreadsheet."}],"raw_content":"<!--section=description-->\n<p>Tick the orders you want to ship, choose <strong>Export AusPost manifest<\/strong> from the\nBulk actions dropdown, and download a CSV that Australia Post's bulk shipping\ntool accepts as-is. Orders are split by destination automatically, so you get a\nDomestic file, an International file, or both, with no reformatting and no\nretyping addresses.<\/p>\n\n<p>The plugin is free and sends nothing anywhere. It reads your orders and writes\na file.<\/p>\n\n<h4>Built around what Australia Post actually rejects<\/h4>\n\n<p>Getting the columns right is the easy half. Most of the work in this plugin is\nin the values, because the importer refuses a file for reasons it explains\nbadly:<\/p>\n\n<ul>\n<li><strong>Whole-centimetre dimensions.<\/strong> Australia Post rejects any dimension with\nmore than 4 integral digits or more than one decimal place, which a\ncalculated measurement such as 9.18 or 13.65 trips instantly.<\/li>\n<li><strong>Item weight never below the declared contents.<\/strong> On international\nmanifests each content line is rounded up to the 0.001 kg floor, so a parcel\nof many sub-gram pieces can declare more across its contents than the order\nweighs. That is rejected with \"the input shipment request is invalid for item\ncontent weight\". The exported weight is always the larger of the two.<\/li>\n<li><strong>Customs values of at least 1.<\/strong> Free lines and fully discounted lines would\notherwise trigger \"Parcel Contents - Value is in error\".<\/li>\n<li><strong>Minimal quoting.<\/strong> PHP's own CSV writer quotes any field containing a\nspace, which produces a header row Australia Post cannot match against its\nrequired column names. This plugin quotes a field only when the value truly\nneeds it.<\/li>\n<li><strong>The Schedule 8 declaration.<\/strong> Australia Post requires every domestic parcel\nto state whether it contains Schedule 8 or medicinal cannabis. Leave the\ncolumn out and the upload still succeeds, but MyPost asks for the answer\nagain the moment you open an order to edit it, one order at a time.<\/li>\n<\/ul>\n\n<h4>Package size that reflects what is in the box<\/h4>\n\n<p>Rather than stacking every item, products are packed into your configured\nparcel footprint: each product's volume is totalled, divided by a configurable\npacking efficiency to allow for air between items, and spread across the base\narea. A satchel of thirty flat pieces no longer exports as thirty layers deep.<\/p>\n\n<p>The parcel is also never shallower than the bulkiest single item it has to\ncontain, measured in its best-fitting orientation. Dimensions and weights are\nconverted from your store's own units, so a shop measuring in millimetres or\ngrams still exports correct centimetres and kilograms.<\/p>\n\n<p>Weight works the same way as height. The order's product weights are summed,\nthen raised to your minimum package weight whenever they come in under it,\nso packaging, padding and products carrying no weight at all never export a\nparcel lighter than the one you lodge.<\/p>\n\n<h4>Signature on delivery, resolved in three steps<\/h4>\n\n<ol>\n<li>The customer's own choice, read from the order and from the order's shipping\nline, so a flag attached to the chosen shipping method is picked up either\nway.<\/li>\n<li>Any shipping method you list as requiring a signature, for services where\nthe signature is a property of the rate rather than a customer choice.<\/li>\n<li>Your configured default.<\/li>\n<\/ol>\n\n<h4>Pro add-on<\/h4>\n\n<p><a href=\"https:\/\/bloodweb.net\/plugins\/csv-exporter-pro-for-australia-post\/\">CSV Exporter Pro<\/a>\nis a separate, paid add-on for stores that need more: customs descriptions and\nHS codes per product, variation or category (including 10-digit US codes),\nmarking orders as exported with a warning before a duplicate upload, and\nimporting tracking numbers back onto orders from a CSV. Everything\ndescribed above stays in this free plugin.<\/p>\n\n<h4>For developers<\/h4>\n\n<p>Filters: <code>apcsv_content_line<\/code> (one customs content line, with its item, product\nand order), <code>apcsv_order_description<\/code>, <code>apcsv_order_edn<\/code>, <code>apcsv_customs_missing<\/code>,\n    apcsv_delivery_address, <code>apcsv_order_signature<\/code> and\n    apcsv_signature_meta_keys. Actions: <code>apcsv_export_ready<\/code> (the export notice is\nabout to show) and <code>apcsv_exported<\/code> (a manifest was written).<\/p>\n\n<h4>Links<\/h4>\n\n<ul>\n<li><a href=\"https:\/\/bloodweb.net\/plugins\/bloodweb-csv-exporter-for-australia-post\/\">Plugin page and version history<\/a> at bloodweb.net, including downloadable sample manifests<\/li>\n<li><a href=\"https:\/\/bloodweb.net\/plugins\/bloodweb-csv-exporter-for-australia-post\/readme\">Full documentation<\/a><\/li>\n<li><a href=\"https:\/\/jackewers.com\/\">Jack Ewers<\/a>, who builds it<\/li>\n<\/ul>\n\n<h4>Privacy<\/h4>\n\n<p>This plugin makes no external requests. It does not phone home, check for\nupdates from anywhere but WordPress.org, load remote scripts, or transmit order\ndata to any third party. The CSV is built on your own server and sent straight\nto your browser as a download.<\/p>\n\n<h4>Not affiliated with Australia Post<\/h4>\n\n<p>This is an independent plugin. It is not made, endorsed or supported by\nAustralia Post. \"Australia Post\" and \"AusPost\" are trademarks of the Australian\nPostal Corporation and are used here only to describe what the plugin is\ncompatible with.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin. WooCommerce must be active.<\/li>\n<li>Go to <strong>WooCommerce &gt; Settings &gt; Shipping &gt; AusPost CSV Exporter<\/strong>.<\/li>\n<li>Fill in your sender (\"Send From\") details. These are deliberately empty on a\nfresh install, and the export refuses to run until Name, Address Line 1,\nSuburb, State and Postcode are set, rather than producing a manifest with no\nreturn address.<\/li>\n<li>Set your package defaults: description, parcel length and width, minimum\nheight, packing efficiency and minimum weight.<\/li>\n<li>If you ship internationally, set your customs defaults: item description,\nHS tariff code, Export Declaration Number, reason for export and country of\norigin. These are also empty on a fresh install, and international exports\nwait until the item description, HS tariff code and EDN are set. Domestic\nexports are not held up.<\/li>\n<\/ol>\n\n<p>To export, go to <strong>WooCommerce &gt; Orders<\/strong>, tick some orders, choose <strong>Export\nAusPost manifest<\/strong> from Bulk actions and click Apply. A notice appears with a\ndownload button for each manifest that applies. To export a single order, open\nit and choose the same entry from the <strong>Order actions<\/strong> box.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20paid%20australia%20post%20account%3F\"><h3>Do I need a paid Australia Post account?<\/h3><\/dt>\n<dd><p>You need whatever account you already use for bulk lodgement, typically MyPost\nBusiness. The plugin produces the file; it does not talk to Australia Post.<\/p><\/dd>\n<dt id=\"why%20is%20the%20export%20refusing%20to%20run%3F\"><h3>Why is the export refusing to run?<\/h3><\/dt>\n<dd><p>Your sender details are not set. A manifest with no return address is rejected\non upload, which you would only discover after switching tabs and trying to\nlodge, so the plugin stops earlier and links you to the settings screen.<\/p>\n\n<p>If only the International download is missing, your customs details are not\nset. Every customs declaration needs an item description, an HS tariff code and\nan Export Declaration Number, and no default is true for every store.<\/p><\/dd>\n<dt id=\"what%20hs%20tariff%20code%20should%20i%20use%3F\"><h3>What HS tariff code should I use?<\/h3><\/dt>\n<dd><p>The one that describes what you sell. There is no general-purpose code. Parcels\nto the United States need the full 10-digit code; Australia Post returns\nUS-bound parcels carrying 6 or 8 digits. The same code written with dots, for\nexample 7117.90.00, is accepted in the Export Declaration Number column.<\/p><\/dd>\n<dt id=\"can%20i%20send%20schedule%208%20or%20medicinal%20cannabis%3F\"><h3>Can I send Schedule 8 or medicinal cannabis?<\/h3><\/dt>\n<dd><p>Not through bulk import. Australia Post rejects any bulk import declaring Yes,\nand those parcels need a StarTrack account instead. The setting exists so the\nplugin never makes a declaration on your behalf that is not true.<\/p><\/dd>\n<dt id=\"my%20store%20measures%20in%20grams%20and%20millimetres.%20does%20that%20work%3F\"><h3>My store measures in grams and millimetres. Does that work?<\/h3><\/dt>\n<dd><p>Yes. Product dimensions and weights are converted from your store's units under\nWooCommerce &gt; Settings &gt; Products.<\/p><\/dd>\n<dt id=\"where%20does%20the%20package%20height%20come%20from%3F\"><h3>Where does the package height come from?<\/h3><\/dt>\n<dd><p>It is calculated, not guessed. See the Description above for how packing\nefficiency and the containing-height check work. The exported height is never\nbelow the minimum you configure.<\/p><\/dd>\n<dt id=\"does%20it%20support%20hpos%3F\"><h3>Does it support HPOS?<\/h3><\/dt>\n<dd><p>Yes. The plugin declares compatibility with High-Performance Order Storage and\nregisters its actions on both the classic and HPOS order screens.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>4.3.0<\/h4>\n\n<ul>\n<li>Security: exported fields that begin with =, +, - or @ are now written as\ntext, so a customer name, address or product title cannot run as a formula\nwhen the manifest is opened in Excel, LibreOffice or Sheets. Phone numbers\nare unaffected: a value made only of digits and phone punctuation is left\nexactly as it was so Australia Post still accepts it.<\/li>\n<\/ul>\n\n<h4>4.2.0<\/h4>\n\n<ul>\n<li>Renamed to Bloodweb CSV Exporter for Australia Post at the WordPress.org\ndirectory's request: a plugin name needs a distinctive term of its own in\nfront of \"for Australia Post\". The plugin folder changes with it, so this\nversion installs alongside an older copy rather than over it. Deactivate\nand delete the old one first. Settings are untouched: they are stored\nunder the same option names.<\/li>\n<li>Dropped the pre-3.0.0 compatibility shims: the clk_auspost_ option\nmigration, meta key and filter aliases. Nothing runs that version any more.<\/li>\n<li>The fallback package weight is now a Minimum Package Weight: a floor\nunder every parcel, rather than a value used only when no product in the\norder has a weight. Orders that weigh less than it now export the minimum,\nso packaging is accounted for instead of being declared away. Whatever you\nhad saved carries over as the new minimum, and setting it to 0 keeps the\nsummed product weights exactly as they are.<\/li>\n<\/ul>\n\n<h4>4.1.1<\/h4>\n\n<ul>\n<li>Readme: describes the Pro add-on's tracking import accurately.<\/li>\n<\/ul>\n\n<h4>4.1.0<\/h4>\n\n<ul>\n<li>Hooks for add-ons: per-line customs values, the parcel description, the\nEDN, the customs check, and actions when an export is ready and when a\nmanifest is written.<\/li>\n<li>A link to the optional Pro add-on in the settings footer and on the Plugins\nscreen, hidden once the add-on is installed.<\/li>\n<\/ul>\n\n<h4>4.0.2<\/h4>\n\n<ul>\n<li>International exports now wait until the item description, HS tariff code\nand Export Declaration Number are set. Fresh installs no longer default to\none store's jewellery customs values. Domestic exports are unaffected.<\/li>\n<li>The default domestic delivery service is now STD.<\/li>\n<li>Error messages are translatable, and the plugin passes WordPress.org's\nPlugin Check.<\/li>\n<li>Tested against WooCommerce 11.1.<\/li>\n<\/ul>\n\n<h4>4.0.1<\/h4>\n\n<ul>\n<li>Added documentation, plugin page and author links to the Plugins screen and\nthe foot of the settings screen.<\/li>\n<\/ul>\n\n<h4>4.0.0<\/h4>\n\n<ul>\n<li>Renamed to CSV Exporter for Australia Post for the WordPress.org directory.\nExisting settings are kept: the internal option prefix is unchanged.<\/li>\n<li>Added the Schedule 8 \/ medicinal cannabis declaration to domestic manifests,\nso MyPost stops asking for it order by order after an import.<\/li>\n<li>Renamed the bulk action to \"Export AusPost manifest\".<\/li>\n<li>Tested against WordPress 7.1 and declared WooCommerce as a required plugin.<\/li>\n<\/ul>\n\n<h4>3.0.0<\/h4>\n\n<ul>\n<li>Renamed every function, option, hook and filter to the apcsv_ prefix.\nSettings are migrated automatically on first load.<\/li>\n<li>Signature on delivery now also reads the order's shipping line, and any\nshipping method marked as signature-required.<\/li>\n<li>Orders with no shipping address fall back to the billing address as a whole,\ninstead of exporting blank recipient columns.<\/li>\n<li>Fixed a fatal error on WooCommerce below 5.6, where get_shipping_phone() does\nnot exist.<\/li>\n<li>Fixed an unticked signature checkbox reading as \"no choice made\" and falling\nthrough to the store default.<\/li>\n<\/ul>\n\n<h4>2.6.0<\/h4>\n\n<ul>\n<li>Australia Post's reworked CN23 categories, keeping B2B and B2C sales apart.\nValues saved under the old list are migrated on read.<\/li>\n<\/ul>\n\n<h4>2.5.0<\/h4>\n\n<ul>\n<li>Export a single order from its Order actions box.<\/li>\n<li>Sender details are no longer pre-filled with another business's address, and\nthe export stops until yours are set.<\/li>\n<\/ul>\n\n<h4>2.4.0<\/h4>\n\n<ul>\n<li>Parcel height always clears the bulkiest product in the order.<\/li>\n<li>Customs values of at least 1, and parcel weight that always covers the\ncontents it declares.<\/li>\n<\/ul>\n\n<h4>2.3.0<\/h4>\n\n<ul>\n<li>Volumetric package height with configurable packing efficiency.<\/li>\n<\/ul>\n\n<h4>2.2.0<\/h4>\n\n<ul>\n<li>Whole-centimetre dimensions, fixing \"Item Height is in error\" on upload.<\/li>\n<li>Dimensions and weights converted from the store's own units.<\/li>\n<\/ul>","raw_excerpt":"Turn selected WooCommerce orders into native Australia Post Domestic and International bulk shipping CSVs, straight from the Orders screen.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/371361","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=371361"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/bloodweb"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=371361"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=371361"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=371361"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=371361"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=371361"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=371361"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}