Shopware 6for Shopware
for Shopware
SEPA QR Codes
Professional GiroCode integration for Shopware 6. Automatic SEPA QR codes on invoices, in emails and customer area.
Benefits
Why GiroCode for Shopware?
Shopware 6 Native
Seamless integration into modern Shopware 6 architecture with Symfony and Vue.js.
Automatic Generation
QR codes are automatically generated and stored at order completion.
PDF Integration
GiroCodes automatically appear on invoice PDFs and delivery notes.
Multi-Shop Capable
Different bank accounts configurable per sales channel.
Integration
Quick Setup
Complete integration in just a few steps
1
Install Plugin
Download the plugin from Shopware Store or install manually.
2
Connect API
Enter your GiroCode API credentials in the plugin configuration.
3
Configure Bank Details
Enter IBAN and recipient name for each sales channel.
4
Customize Templates
Optional: Adjust position and size in email/PDF templates.
Code Examples
Shopware 6 Integration
Service class and Twig template for your plugin development
GiroCodeService.php
<?php declare(strict_types=1);
namespace YourVendor\GiroCodeIntegration\Service;
use Shopware\Core\Checkout\Order\OrderEntity;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;
class GiroCodeService
{
private Client $client;
private string $apiUser;
private string $apiSecret;
private string $iban;
private string $recipient;
public function __construct(
string $apiUser,
string $apiSecret,
string $iban,
string $recipient
) {
$this->client = new Client([
'base_uri' => 'https://api.girocode-api.de/',
'timeout' => 30.0,
]);
$this->apiUser = $apiUser;
$this->apiSecret = $apiSecret;
$this->iban = $iban;
$this->recipient = $recipient;
}
public function generateForOrder(OrderEntity $order): ?string
{
try {
$response = $this->client->post('generate', [
'json' => [
'user' => $this->apiUser,
'secret' => $this->apiSecret,
'iban' => $this->iban,
'paymentrecipient' => $this->recipient,
'purpose' => 'Bestellung ' . $order->getOrderNumber(),
'amount' => (string) $order->getAmountTotal(),
'imageformat' => 'png',
'dimension' => '256',
'output' => 'json',
],
]);
$data = json_decode(
$response->getBody()->getContents(),
true,
512,
JSON_THROW_ON_ERROR
);
if ($data['success'] && isset($data['data']['data'])) {
return $data['data']['data']; // Base64 Data URL
}
} catch (GuzzleException | \JsonException $e) {
// Log error
}
return null;
}
}invoice.html.twig
{# In Resources/views/documents/invoice.html.twig #}
{% if order.customFields.girocode_dataurl is defined %}
<div class="girocode-section" style="text-align: center; margin-top: 30px;">
<h4>Schnell bezahlen mit GiroCode</h4>
<p style="font-size: 12px; color: #666;">
Scannen Sie den QR-Code mit Ihrer Banking-App
</p>
<img
src="{{ order.customFields.girocode_dataurl }}"
alt="GiroCode SEPA QR-Code"
style="width: 150px; height: 150px;"
/>
</div>
{% endif %}Features
All Features at a Glance
Shopware 6.4+ compatible
Sales channel specific configuration
Automatic order number as reference
PDF invoice integration
Email template support
Custom fields for orders
CLI commands for batch generation
GDPR compliant
Shopware Benefits
Perfect for Shopware Shops
Sales Channels
Different bank accounts per sales channel. Ideal for multi-brand shops or B2B/B2C separation.
Flow Builder
Integration with Shopware Flow Builder for automatic QR code generation on specific events.