Certify the integration

Run happy paths, rejection cases, repeated-delivery tests, timeout tests, and evidence checks.

Certification proves that Blinc can call the institution's non-production endpoints securely and that every operation behaves correctly under success, rejection, repeated delivery, timeout, and tampering conditions. The institution never calls a Blinc operation endpoint during these tests.

What you provide

Send these values through the agreed secure onboarding channel:

ItemWhat to provideWhy it is needed
Operation URLsComplete HTTPS URL for every supported operationThe simulator calls the same routes the integration will use.
Institution public keyP-256 public key in the agreed SubjectPublicKeyInfo formatBlinc encrypts requests and verifies institution response signatures.
Institution member codeSix-digit routing code issued by BlincMessage IDs and routing fields must use the exact code supplied during onboarding.
Network rulesIP allow-list, mutual TLS, DNS, firewall, and certificate requirementsThe simulator must be able to establish HTTPS connections.
Test customerApproved non-production identity and accountLinking and debit tests require a predictable customer record.
Test beneficiaryApproved non-production credit accountCredit Transfer and Credit Notification require a predictable beneficiary.
Support contactName/team and reachable channelBoth teams use correlation IDs to investigate failed cases.

Never send an institution private key. It stays in the institution's controlled key store.

Prepare the environment

  1. Create separate non-production P-256 signing/decryption keys.
  2. Import the Blinc non-production public key.
  3. Configure the six-digit institution member code issued by Blinc.
  4. Deploy HTTPS endpoints with trusted certificates.
  5. Synchronise system clocks to a reliable UTC source.
  6. Create replay and idempotency storage that survives application restarts.
  7. Load the approved test customer, account, beneficiary, account link prerequisites, and balances.
  8. Enable correlation-safe logs without plaintext, tokens, keys, or raw signatures.
  9. Confirm the environment cannot route requests to production accounts or hosts.

Run the connection check

The first check contains no financial action. It proves that:

  • DNS and TLS work;
  • network allow-lists permit the call;
  • the configured URL is correct;
  • the receiver reads all required headers;
  • the institution can decrypt a Blinc request and verify its signature;
  • Blinc can decrypt the response and verify the institution signature.

Do not continue to business scenarios until this check passes.

Run one complete customer journey

Use the same fictional identity and references throughout:

  1. Account Linking: connect the test customer account and store the returned account-linking ID.
  2. Debit Authorization: debit the linked account using the account link and positive numeric authenticator ID.
  3. Reverse: return the complete debit amount once.
  4. Repeated Reverse delivery: Blinc delivers the same Reverse again; confirm no second credit is created.
  5. Account Unlinking: cancel the account link.
  6. Post-unlink debit: confirm a new debit using the cancelled account link returns RJCT.
  7. Credit Transfer: credit the test beneficiary and confirm the balance or ledger changes once.
  8. Repeated Credit Transfer delivery: Blinc delivers the same transfer again; confirm there is no second credit.
  9. Credit Notification: record both a PDNG and BOOK notification.
  10. Repeated Credit Notification delivery: Blinc delivers the same notification again; confirm no duplicate record or ledger action is created.

For each step, save the safe correlation IDs, decrypted business status in the controlled test report, account/ledger result, and whether response signature verification passed.

Run security rejection scenarios

Each case must fail before a financial or account link state change:

ScenarioHow the simulator changes the requestExpected result
Missing signatureOmits x-signatureReject authentication; no processing.
Invalid signatureSigns with an untrusted keyReject before parsing business data.
Changed plaintextAlters the encrypted plaintext after signingSignature or AES-GCM authentication fails.
Changed ciphertext/tagFlips a ciphertext or tag byteDecryption authentication fails.
Wrong recipient keyEncrypts for another institutionDecryption fails safely.
Expired timestampSends an old x-timestampReject as stale.
Future timestampSends a value beyond allowed clock skewReject as invalid.
ReplayResends a previously consumed protected deliveryReturn stored idempotent result or reject according to the documented duplicate rule; never process twice.
Invalid customer signatureChanges signed customer-visible payment dataDebit Authorization returns RJCT; no debit.
Wrong authenticator IDSends an unknown, zero, inactive, revoked, quoted, or mismatched key_idDebit Authorization returns RJCT; no debit.

Run field and business rejection scenarios

Test at least these cases:

  • missing required parent object;
  • missing, null, empty, or wrong-type required leaf field;
  • malformed 35-digit message ID;
  • invalid or non-UTC date-time;
  • message time inconsistent with the ID timestamp;
  • zero or negative amount;
  • unsupported or mismatched currency;
  • incorrect institution member code;
  • unknown, expired, cancelled, or mismatched account link;
  • creditor ID mismatch;
  • beneficiary account closed, blocked, unknown, or unable to receive the currency;
  • Reversal original transaction not found;
  • Reversal amount or currency differs from the original debit;
  • unsupported payment method or inconsistent terminal fields;
  • HTTP 200 carrying RJCT is treated as a rejection, not success.

Every rejection must include a stable code and a simple correction sentence without leaking protected data.

Run failure and recovery scenarios

ScenarioExpected behaviour
Debit Authorization completes, but its response is lostBlinc does not send Debit Authorization again. Blinc sends Reverse with the original debit references, and the institution returns the funds once.
Debit Authorization never completes and its response is lostBlinc sends Reverse with the original debit references, and the institution returns RJCT with NOOR. No debit is created.
Account Linking response is lostBlinc does not retry the old request. The customer starts again, and the new request has new identifiers. No duplicate account link is created.
Account Unlinking response is lostBlinc does not retry the old request. The customer starts again, and the new request has new identifiers. The account link is not changed twice.
Credit Notification, Credit Transfer, or Reverse response is lostBlinc may deliver the same plaintext and business identifiers again. The institution returns the stored result and applies no second business action.
Institution application restarts before a permitted repeated deliveryStored duplicate-protection state survives the restart and still prevents a second business action.
An unexpected duplicate Account Linking, Account Unlinking, or Debit Authorization arrivesThe institution does not apply the account or financial action twice, even though Blinc does not normally retry that operation.
Response signature is invalidBlinc does not trust or report the business result.
Blinc cannot open the encrypted responseBlinc does not treat the operation as a confirmed success and follows the operation-specific behavior above.

Evidence required for approval

Provide a report containing:

  • institution name, member code, environment, and test date;
  • endpoint names and hostnames, with secrets and sensitive query data removed;
  • test-case ID, request message ID, business identifiers, and result;
  • HTTP outcome and decrypted business status;
  • proof that request and response signature checks passed or correctly failed;
  • proof that permitted repeated Credit Notification, Credit Transfer, and Reverse deliveries did not create duplicate business actions;
  • proof that unexpected duplicate link, unlink, or debit deliveries did not create duplicate state;
  • proof that a Debit Authorization timeout was followed by Reverse rather than another debit request;
  • safe ledger/balance evidence for accepted financial operations;
  • every unresolved failure, owner, and remediation date.

Do not attach private keys, complete tokens, plaintext customer payloads, or raw signatures.

Approval criteria

Certification passes only when:

  • all required operation journeys pass;
  • all protected responses can be decrypted and verified;
  • every security-negative scenario fails before mutation;
  • repeated-delivery, timeout, and restart scenarios produce no duplicates;
  • business rejections are distinguished from HTTP delivery success;
  • examples, field formats, error codes, and implemented schemas agree;
  • no production data or production endpoint was used;
  • no blocking security or reconciliation issue remains.

Next

Use the Glossary whenever a field or protocol term is unfamiliar.


Did this page help you?