{"id":375247,"date":"2026-09-25T09:48:19","date_gmt":"2026-09-25T09:48:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/payment-integrations-for-bachs\/"},"modified":"2026-09-25T09:47:57","modified_gmt":"2026-09-25T09:47:57","slug":"etchcon-checkout-for-bachs","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/etchcon-checkout-for-bachs\/","author":17863440,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.2","requires":"6.8","requires_php":"8.1","requires_plugins":null,"header_name":"EtchCon Checkout for Bachs","header_author":"Etchpoint","header_description":"Accept Bachs payments through supported WordPress commerce, membership, form and donation plugins.","assets_banners_color":"fefefe","last_updated":"2026-09-25 09:47:57","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/etchpoint.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":39,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"drinoayo","date":"2026-09-25 09:47:57","revision":3712783}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3712917,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3712917,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3712917,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3712917,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[5800,601,17049,1887,286],"plugin_category":[42,45],"plugin_contributors":[],"plugin_business_model":[],"class_list":["post-375247","plugin","type-plugin","status-publish","hentry","plugin_tags-donations","plugin_tags-forms","plugin_tags-memberships","plugin_tags-payments","plugin_tags-woocommerce","plugin_category-contact-forms","plugin_category-ecommerce","plugin_committers-drinoayo"],"banners":{"banner":"https:\/\/ps.w.org\/etchcon-checkout-for-bachs\/assets\/banner-772x250.png?rev=3712917","banner_2x":"https:\/\/ps.w.org\/etchcon-checkout-for-bachs\/assets\/banner-1544x500.png?rev=3712917","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/etchcon-checkout-for-bachs\/assets\/icon-128x128.png?rev=3712917","icon_2x":"https:\/\/ps.w.org\/etchcon-checkout-for-bachs\/assets\/icon-256x256.png?rev=3712917","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>EtchCon Checkout for Bachs connects supported WordPress commerce, membership, form, and donation plugins to Bachs hosted checkout.<\/p>\n\n<p>EtchCon Checkout for Bachs is independently developed by Etchpoint and is not affiliated with or endorsed by Bachs Technologies Limited.<\/p>\n\n<p>Version 1.0.0 supports one-time payments for:<\/p>\n\n<ul>\n<li>WooCommerce<\/li>\n<li>Paid Memberships Pro<\/li>\n<li>Gravity Forms<\/li>\n<li>Fluent Forms Pro payment forms<\/li>\n<li>GiveWP<\/li>\n<\/ul>\n\n<p>The plugin uses a shared payment core with exact amount verification, signed webhook verification, event deduplication, safe fulfillment, reconciliation tools, diagnostics, and provider-confirmed refunds.<\/p>\n\n<p>Customers are redirected to Bachs hosted checkout to enter payment details. The plugin does not collect or store full card numbers, CVV\/CVC values, or other raw card credentials.<\/p>\n\n<p>Recurring payments and subscriptions are not included in version 1.0.0.<\/p>\n\n<h3>Configuration<\/h3>\n\n<p>Bachs Payments &gt; Settings provides one shared configuration for WooCommerce, Paid Memberships Pro, Gravity Forms, Fluent Forms, and GiveWP.<\/p>\n\n<p>The active environment requires:<\/p>\n\n<ul>\n<li>A matching Bachs secret API key (<code>sk_sandbox_...<\/code> for Sandbox or <code>sk_live_...<\/code> for Live).<\/li>\n<li>The active Bachs webhook signing secret.<\/li>\n<\/ul>\n\n<p>The settings screen also supports an optional previous webhook secret during secret rotation and an optional organization ID for stricter provider verification.<\/p>\n\n<p>For sites that prefer secret management through <code>wp-config.php<\/code>, the following constants remain supported and take precedence over dashboard values when defined:<\/p>\n\n<ul>\n<li><code>ETCHPOINT_BACHS_ENVIRONMENT<\/code> - <code>sandbox<\/code> or <code>live<\/code>.<\/li>\n<li><code>ETCHPOINT_BACHS_SANDBOX_SECRET_KEY<\/code> - sandbox secret key.<\/li>\n<li><code>ETCHPOINT_BACHS_LIVE_SECRET_KEY<\/code> - live secret key.<\/li>\n<li><code>ETCHPOINT_BACHS_WEBHOOK_SECRET<\/code> - active webhook signing secret.<\/li>\n<li><code>ETCHPOINT_BACHS_WEBHOOK_SECRET_PREVIOUS<\/code> - previous webhook secret during secret rotation.<\/li>\n<li><code>ETCHPOINT_BACHS_ORGANIZATION_ID<\/code> - optional organization identifier.<\/li>\n<\/ul>\n\n<p>Dashboard-managed secret values are stored in the WordPress options table and are never displayed back in plaintext after saving. They are deleted when the plugin is uninstalled. Financial\/audit records remain retained as described below.<\/p>\n\n<p>Live payments require HTTPS.<\/p>\n\n<h3>Refunds<\/h3>\n\n<p>Administrators can request Bachs refunds from Bachs Payments &gt; Refunds.<\/p>\n\n<p>Full refunds are supported. Partial refunds are supported when the Bachs settlement currency matches the original WordPress transaction currency. If Bachs settled the charge in a different currency, use a full refund so the plugin does not guess an exchange rate. Bachs currently permits one refund operation per charge, so a partial refund consumes the refund operation for that charge.<\/p>\n\n<p>A refund is not treated as complete merely because the API accepted the request. The plugin waits for signed provider evidence confirming the refund before applying the corresponding local refund state.<\/p>\n\n<h3>Reconciliation and diagnostics<\/h3>\n\n<p>Bachs Payments &gt; Reconciliation can safely re-check provider state and retry incomplete WordPress fulfillment.<\/p>\n\n<p>Bachs Payments &gt; Diagnostics provides read-only configuration and integration checks. Secret values and full provider responses are not displayed.<\/p>\n\n<h3>External Service<\/h3>\n\n<p>This plugin requires Bachs, a third-party payment service provided by Bachs Technologies Limited. The plugin contacts Bachs only when a configured administrator or customer uses functionality that requires the payment service, such as creating or retrieving checkout sessions, verifying payments, requesting refunds, or receiving Bachs webhooks.<\/p>\n\n<p>Bachs service: https:\/\/bachs.io\/<\/p>\n\n<p>Bachs Merchant Terms: https:\/\/bachs.io\/buyer-terms<\/p>\n\n<p>Bachs Privacy Policy: https:\/\/bachs.io\/privacy<\/p>\n\n<p>Bachs developer documentation: https:\/\/docs.bachs.io\/<\/p>\n\n<p>Service endpoints used by the plugin:<\/p>\n\n<ul>\n<li>Sandbox API: https:\/\/sandbox-api.bachs.io<\/li>\n<li>Live API: https:\/\/api.bachs.io<\/li>\n<li>Hosted checkout: https:\/\/checkout.bachs.io<\/li>\n<\/ul>\n\n<p>A Bachs merchant account and applicable Bachs service access are required to process payments. Bachs may charge fees under its own terms and pricing. Etchpoint does not control Bachs availability, eligibility decisions, fees, settlement, or payment processing rules.<\/p>\n\n<h3>Data sent to Bachs<\/h3>\n\n<p>For checkout creation, the plugin sends the transaction currency and amount, success and cancel return URLs, an opaque payment reference, correlation metadata identifying the WordPress integration and local transaction record, and customer contact information required for hosted checkout. This includes the customer email address and can include the customer name and phone number when available from the originating integration.<\/p>\n\n<p>Payment details entered by the customer on hosted checkout are submitted directly to Bachs rather than to this plugin.<\/p>\n\n<p>When an administrator initiates a refund, the plugin sends the Bachs charge identifier, requested refund amount, internal reference\/idempotency information, and an optional administrator-entered refund reason.<\/p>\n\n<p>The plugin also retrieves payment or refund records from Bachs when verification, reconciliation, diagnostics, or webhook processing requires authoritative provider state.<\/p>\n\n<h3>Local data and privacy<\/h3>\n\n<p>The plugin stores operational payment records in custom WordPress database tables. These records can include the integration name, local WordPress record identifier, Bachs checkout\/charge\/refund identifiers, amount, currency, processing status, timestamps, error information, and an optional refund reason.<\/p>\n\n<p>For webhook deduplication and audit processing, the plugin stores provider event identifiers and a SHA-256 hash of the webhook payload. It does not persist the complete raw webhook payload.<\/p>\n\n<p>The plugin does not store raw card credentials.<\/p>\n\n<p>Payment, webhook, reconciliation, and refund records are intentionally retained when the plugin is uninstalled. They can be important financial and audit records and are not automatically deleted. Site owners are responsible for retention and deletion in accordance with their legal and operational requirements.<\/p>\n\n<p>Because local transaction identifiers can link these records to orders, memberships, form submissions, or donations managed by other plugins, those integrations may contain personal data under their own retention policies.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin ZIP through Plugins &gt; Add New &gt; Upload Plugin, or install it from the WordPress Plugin Directory when available.<\/li>\n<li>Activate EtchCon Checkout for Bachs.<\/li>\n<li>Open Bachs Payments &gt; Settings and choose Sandbox or Live.<\/li>\n<li>Enter the matching Bachs secret API key and webhook signing secret, then save.<\/li>\n<li>Copy the webhook endpoint shown on the settings screen into your Bachs webhook configuration.<\/li>\n<li>Subscribe the endpoint to <code>collection.succeeded<\/code>, <code>collection.failed<\/code>, <code>collection.underpaid<\/code>, <code>checkout.expired<\/code>, <code>refund.created<\/code>, <code>refund.paid<\/code>, and <code>refund.failed<\/code>.<\/li>\n<li>Enable Bachs in the supported WordPress integration you want to use.<\/li>\n<li>Use sandbox mode first and confirm checkout, webhook completion, and reconciliation before switching to live mode.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20bachs%20account%3F\"><h3>Do I need a Bachs account?<\/h3><\/dt>\n<dd><p>Yes. Bachs provides the external payment service used by this plugin.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20store%20card%20details%3F\"><h3>Does the plugin store card details?<\/h3><\/dt>\n<dd><p>No. Customers enter payment details on Bachs hosted checkout. This plugin does not store full card numbers or CVV\/CVC values.<\/p><\/dd>\n<dt id=\"can%20i%20use%20sandbox%20mode%3F\"><h3>Can I use sandbox mode?<\/h3><\/dt>\n<dd><p>Yes. Sandbox is the default environment. Choose Sandbox under Bachs Payments &gt; Settings and use the matching sandbox secret key and webhook configuration.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20bachs%20confirms%20payment%20but%20wordpress%20fulfillment%20fails%3F\"><h3>What happens if Bachs confirms payment but WordPress fulfillment fails?<\/h3><\/dt>\n<dd><p>The payment remains recorded and can be safely rechecked from Bachs Payments &gt; Reconciliation. The reconciliation flow verifies provider state before retrying local fulfillment.<\/p><\/dd>\n<dt id=\"are%20recurring%20payments%20supported%3F\"><h3>Are recurring payments supported?<\/h3><\/dt>\n<dd><p>No. Version 1.0.0 is limited to one-time payment flows.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial public release.<\/li>\n<li>Added one-time Bachs hosted checkout integrations for WooCommerce, Paid Memberships Pro, Gravity Forms, Fluent Forms Pro, and GiveWP.<\/li>\n<li>Added signed webhook verification, deduplication, reconciliation, diagnostics, and refund support.<\/li>\n<\/ul>","raw_excerpt":"Accept Bachs hosted payments in WooCommerce, Paid Memberships Pro, Gravity Forms, Fluent Forms, and GiveWP.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/375247","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=375247"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/drinoayo"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=375247"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=375247"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=375247"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=375247"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=375247"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=375247"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}