[wpify_woo_render_qr_code]
The shortcode automatically detects the order in this order:
order_id parameter in shortcode
key parameter in URL (thank you page)
- Global variable
$email (in email)
- Global variable
$order
- Query variable
order-pay or view-order
| Parameter | Type | Description |
|---|
order_id | int | Order ID (optional) |
[wpify_woo_render_qr_code order_id="12345"]
do_action( 'wpify_woo_render_qr_code', $order );
| Parameter | Type | Description |
|---|
$order | int|WC_Order | Order ID or WC_Order object |
add_action( 'woocommerce_view_order', function( $order_id ) {
$order = wc_get_order( $order_id );
if ( $order->get_status() === 'on-hold' ) {
do_action( 'wpify_woo_render_qr_code', $order );
Modifies payment data before generating the QR code.
apply_filters( 'wpify_woo_qr_payment_details', array $payment_details, WC_Order $order );
| Parameter | Type | Description |
|---|
$payment_details | array | Payment data (see below) |
$order | WC_Order | Order object |
| Key | Type | Description |
|---|
order | string | Order number |
total | float | Total amount |
vs | string | Variable symbol (order number without non-numeric characters) |
currency | string | Currency (CZK, EUR, HUF) |
due_date | string | Due date (Y-m-d) |
account_number | string | Account number (CZ) |
bank_code | string | Bank code (CZ) |
iban | string | IBAN |
bic | string | BIC/SWIFT |
note | string | Message for recipient |
recipient_name | string | Recipient name |
add_filter( 'wpify_woo_qr_payment_details', function( $details, $order ) {
// Use custom meta as variable symbol
$custom_vs = $order->get_meta( '_custom_variable_symbol' );
$details['vs'] = $custom_vs;
add_filter( 'wpify_woo_qr_payment_details', function( $details, $order ) {
// Due date 14 days from order creation
$due_date = new DateTime( $order->get_date_created()->format( 'Y-m-d' ) );
$due_date->modify( '+14 days' );
$details['due_date'] = $due_date->format( 'Y-m-d' );
Skips QR code rendering for a specific order/account.
apply_filters( 'wpify_woo_skip_qr_payment', bool $skip, WC_Order $order, array $account );
| Parameter | Type | Description |
|---|
$skip | bool | Skip rendering (default: false) |
$order | WC_Order | Order object |
$account | array | Bank account data |
add_filter( 'wpify_woo_skip_qr_payment', function( $skip, $order, $account ) {
if ( $order->is_paid() ) {
add_filter( 'wpify_woo_skip_qr_payment', function( $skip, $order, $account ) {
if ( $order->get_total() < 100 ) {
Modifies bank account data after loading from BACS and before validation.
apply_filters( 'wpify_woo_qr_account_data', array $account, WC_Order $order );
| Parameter | Type | Description |
|---|
$account | array | Account data (see below) |
$order | WC_Order | Order object |
| Key | Type | Description |
|---|
source | string | Data source (BACS account index or empty) |
iban | string | IBAN |
number | string | Account number |
bank_code | string | Bank code |
bic | string | BIC/SWIFT |
recipient_name | string | Recipient name |
type | string | QR type (cz, sk, hu, epc) |
enabled_currencies | array | Enabled currencies |
enabled_countries | array | Enabled countries |
label | string | Info label |
add_filter( 'wpify_woo_qr_account_data', function( $account, $order ) {
// For orders over 10000 CZK use a different account
if ( $order->get_total() > 10000 && $order->get_currency() === 'CZK' ) {
$account['number'] = '123456789';
$account['bank_code'] = '0100';
The module logs errors when generating QR codes to a log available in the administration:
WPify Woo → WPify Logs
| Event | Description |
|---|
| QR generation error | Failure when creating QR code (invalid data, library exception) |
| Unsupported currency | Order currency does not match QR standard |
[2024-01-15 10:30:45] ERROR: QR payment: error create QR code.
"message": "Invalid IBAN format",
"payment_details": { ... }
| File | Path |
|---|
| QR images | wp-content/uploads/qr-payment/ |
| Logs | wp-content/uploads/logs/ |