Can't create triggers in MySQL, no errors but no triggers either
You have to use delimiter declared earlier to complete the statement:

DELIMITER // -- turn delimiter into "//" instead of ";"
CREATE TRIGGER `ZZZ`.`name` BEFORE INSERT ON `transactions`
FOR EACH ROW 
BEGIN
   -- the code that will be stored for the future use, 
   -- not the statements that will be executed right now
   SELECT something FROM ... ; -- inactive delimiter

END// -- redefined delimiter
DELIMITER ; -- again


Trigger declaration is the statement that contains the code. To tell the code from the statement the different delimiters are used. Redefined // for the containing statement and the default ; for the contained code. 

That's how your queries should look like:

USE `wa3`;

CREATE TABLE `transactions` (
    `id` CHAR(36) NOT NULL,
    `account_number` INT(11) NOT NULL,
    `transactions` INT(11) NOT NULL,
    `debit` DECIMAL(16,2) NULL DEFAULT NULL,
    `credit` DECIMAL(16,2) NULL DEFAULT NULL,
    `balance` DECIMAL(16,2) NOT NULL,
    `created` DATETIME NULL DEFAULT NULL,
    `modified` DATETIME NULL DEFAULT NULL,
    PRIMARY KEY (`id`)
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
;

DELIMITER //

CREATE TRIGGER `wa3`.`InsertCreditOrDebitNotNull` BEFORE INSERT ON `transactions`
FOR EACH ROW BEGIN
  IF (NEW.credit IS NULL AND NEW.debit IS NULL) 
    THEN 
       SIGNAL SQLSTATE '45000'
          SET MESSAGE_TEXT = '\'credit\' and \'debit\' cannot both be null';
  END IF;
END// -- first trigger

CREATE TRIGGER `wa3`.`UpdateCreditOrDebitNotNull` BEFORE UPDATE ON `transactions`
FOR EACH ROW BEGIN
  IF (NEW.credit IS NULL AND NEW.debit IS NULL) 
    THEN
      SIGNAL SQLSTATE '45000'
         SET MESSAGE_TEXT = '\'credit\' and \'debit\' cannot both be null';
  END IF;
END// -- second trigger

CREATE TRIGGER `wa3`.`InsertBothCreditAndDebit` BEFORE INSERT ON `transactions`
FOR EACH ROW BEGIN
  IF (NEW.credit IS NOT NULL AND NEW.debit IS NOT NULL) 
    THEN
      SIGNAL SQLSTATE '45000'
         SET MESSAGE_TEXT = '\'credit\' and \'debit\' cannot both have a value';
  END IF;
END// -- third trigger

CREATE TRIGGER `wa3`.`UpdateBothCreditAndDebit` BEFORE UPDATE ON `transactions`
FOR EACH ROW BEGIN
  IF (NEW.credit IS NOT NULL AND NEW.debit IS NOT NULL) 
    THEN
       SIGNAL SQLSTATE '45000'
          SET MESSAGE_TEXT = '\'credit\' and \'debit\' cannot both have a value';
  END IF;
END// -- fourth trigger

DELIMITER ;

SHOW TRIGGERS;