Setup Airwallex logo

Setup Airwallex

Community
afu-it
setup-airwallex

Set up, build, debug, review, and explain Airwallex online payment integrations for Malaysian merchants using official Airwallex docs, Payment Intents API, Hosted Payment Page, Checkout Sessions, Drop-in and Embedded Elements (Airwallex.js), Native API, FPX, DuitNow QR, Touch 'n Go, Boost, GrabPay, ShopeePay, Atome, cards, Apple Pay, Google Pay, access tokens, scoped API keys, webhooks with x-signature HMAC-SHA256 verification, refunds, cancellations, captures, payment consents, recurring payments, disputes, settlements, sandbox simulation, test cards, and error codes. Use when working with Airwallex Malaysia, MYR payment acceptance, Payment Intents, client_secret checkout, next_action redirects, webhook settlement, refunds, reconciliation, or production readiness.

Overview

Publisherafu-it
Repositorymalaysia-payment-gateway
Skill namesetup-airwallex
Stars
74
Forks
11
Bundled files
12
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 12 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by afu-it on GitHub. Read the source before you install it.

Installation

Install the Setup Airwallex AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/afu-it/malaysia-payment-gateway/tree/main/setup-airwallex
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/afu-it/malaysia-payment-gateway.git /tmp/malaysia-payment-gateway
mkdir -p .claude/skills
cp -r /tmp/malaysia-payment-gateway/setup-airwallex .claude/skills/setup-airwallex
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Setup Airwallex in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Setup Airwallex on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Setup Airwallex is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Airwallex Payments (Malaysia)

Use this skill for Airwallex online payment acceptance work, scoped to what a Malaysian merchant uses (MYR, FPX, DuitNow, local e-wallets, cards, wallets). Airwallex also sells FX, payouts, issuing, spend and treasury; those APIs are listed in the endpoint catalogue only.

Source

Read references/airwallex-api.md first. It is the entry point: environments, auth, amounts, idempotency, end-to-end flow, webhook signature, statuses, errors, rate limits, and the full endpoint catalogue (every documented operation).

Then read the topic file you need:

  • references/airwallex-payment-intents.md: create, retrieve, list, update, confirm, confirm_continue, capture, cancel, increment authorization, payment attempts; next_action; 3DS.
  • references/airwallex-checkout.md: Hosted Payment Page (redirectToCheckout), Drop-in Element, Checkout Sessions API, Payment Links API.
  • references/airwallex-malaysia-methods.md: FPX, DuitNow, Touch 'n Go, Boost, GrabPay, ShopeePay, Atome, 7-Eleven MY, cards, Apple Pay, Google Pay; limits, settlement, confirm payloads, bank codes, config APIs.
  • references/airwallex-webhooks.md: subscription, delivery headers, signature verification, event list, IP allowlist, retries, Webhook API.
  • references/airwallex-refunds-disputes.md: refunds, cancellations, disputes.
  • references/airwallex-recurring.md: customers, payment consents, payment methods, CIT/MIT, Touch 'n Go recurring.
  • references/airwallex-settlement.md: settlements, settlement records, financial transactions, financial reports.
  • references/airwallex-testing-errors.md: sandbox, test cards, simulation APIs, error codes, access token API.
  • references/account-setup.md: registration, activation, keys, env vars, sandbox vs live, settlement and pricing pointers.
  • references/source-map.md: every official page used, coverage counts, and what was left out.

Core Workflow

  1. Identify environment: sandbox (https://api.sandbox.airwallex.com) or production (https://api.airwallex.com).
  2. Pick the surface: Hosted Payment Page (JS redirectToCheckout or Checkout Session URL), Drop-in Element, Embedded Elements, Native API (card PAN needs PCI-DSS ROC), Payment Links, or a plugin (WooCommerce, Shopify).
  3. Confirm the account: Payments activated, each payment method activated in Payments > Payment methods, settlement currencies set, webhook created, scoped API key made.
  4. Server: get an access token with POST /api/v1/authentication/login (x-client-id, x-api-key), cache it until expires_at (30 minutes).
  5. Create a local pending order, then POST /api/v1/pa/payment_intents/create with request_id (UUID), amount (major units, 20.50 = RM20.50), currency: "MYR", merchant_order_id, return_url.
  6. Send only id + client_secret to the browser (valid 60 minutes), or confirm server-side and follow next_action (redirect URL or QR text).
  7. Treat return_url, successUrl, and the Drop-in success event as UX only.
  8. Verify each webhook: HMAC-SHA256 hex of x-timestamp + raw body with the webhook secret, constant-time compare, check timestamp tolerance, then parse.
  9. Settle idempotently on payment_intent.succeeded after a GET /api/v1/pa/payment_intents/{id} re-check of status, amount, currency, merchant_order_id.
  10. Use retrieve as fallback when webhooks are late; dedupe events by id; refunds via POST /api/v1/pa/refunds/create.

Core Facts

  • Auth: POST /api/v1/authentication/login returns token + expires_at; send Authorization: Bearer <token>. Login limit 100/min per key.
  • Amounts are decimals in major units (MYR has 2 decimals). Not sen.
  • request_id is the idempotency key on every POST (max 64 chars); retry with the same value.
  • Payment Intent statuses: REQUIRES_PAYMENT_METHOD, REQUIRES_CUSTOMER_ACTION, REQUIRES_CAPTURE, PENDING, PENDING_REVIEW, SUCCEEDED, CANCELLED (list is not exhaustive).
  • Fulfil on payment_intent.succeeded. A failed attempt emits payment_intent.payment_failed and the intent reverts to REQUIRES_PAYMENT_METHOD (payment_intent.requires_payment_method), so the shopper can retry on the same intent.
  • Webhook headers: x-timestamp (Unix ms) and x-signature (hex HMAC-SHA256 over x-timestamp string + raw JSON body, key = that webhook's secret). Reply 200 fast; retries back off for about 3 days; order is not guaranteed.
  • MY method types: fpx (needs bank_name), duit_now, tng (needs flow), boost, grabpay, shopee_pay, atome, seven_eleven, card, applepay, googlepay.
  • FPX: MYR 1.01 to 2,000, T+3, refunds within 180 days, no chargebacks, no recurring.
  • Rate limits: production 100 req/s global, 20 req/s per endpoint, 50 concurrent; sandbox 20, 10, 10. HTTP 429 too_many_requests.
  • Latest API version 2026-08-21; override per call with x-api-version.
  • Webhook source IPs (production and sandbox) are listed in references/airwallex-webhooks.md.

Critical Rules

  • Keep Client ID, API key, access token, and webhook secret server-side. Only client_secret may reach the browser. Never log client_secret.
  • Compute the amount on the server; never accept it from the browser.
  • Verify the signature on the raw body before any JSON parsing. Use the secret of the exact webhook subscription (each URL has its own). Test events are signed with the key in the client-secret-key header.
  • Do not mark paid from a redirect, successUrl, Drop-in success, a QR display, or the confirm response alone; FPX, DuitNow, and wallets finish asynchronously.
  • Re-check status, amount, currency, and merchant_order_id against your record before settling; store intent id and event id with unique constraints.
  • Sandbox and production use different credentials, hosts, webhook secrets, and webhook IPs.
  • Create a new Payment Intent when client_secret expires; it cannot be refreshed. Update the intent (not a new one) if the cart changes before confirm.
  • Raw card data via Native API only with PCI-DSS ROC and Airwallex approval; otherwise use HPP, Drop-in, or Elements (SAQ A).
  • Use scoped API keys and IP whitelisting for production keys.
  • Pricing, limits, activation windows, and availability change; link to official pages, confirm in the web app.

Completion Criteria

An Airwallex integration is done only when:

  1. Token is fetched server-side, cached, and refreshed on 401 or near expires_at.
  2. Payment Intent is created server-side with a unique request_id, server-computed amount, currency, merchant_order_id, and return_url.
  3. The frontend gets only intent_id, client_secret, currency; checkout uses HPP, Drop-in, Elements, a Checkout Session URL, or a server confirm with next_action handling.
  4. A webhook subscription exists for the right environment with at least payment_intent.succeeded, payment_intent.payment_failed, payment_intent.cancelled, and refund.*.
  5. The handler verifies x-signature over x-timestamp + raw body, enforces timestamp tolerance, responds 200 quickly, and processes idempotently by event id.
  6. Settlement re-reads the intent and checks status, amount, currency, and order id; duplicates and out-of-order events cannot double-fulfil.
  7. Tests cover bad signature, replay, wrong amount or currency, failed payment, expired client_secret, FPX or DuitNow pending then succeeded (sandbox simulation), refund success and failure.
  8. Deployment docs list AIRWALLEX_CLIENT_ID, AIRWALLEX_API_KEY, AIRWALLEX_WEBHOOK_SECRET, AIRWALLEX_ENV, return URL, webhook URL, and sandbox/live separation.

Loophole Review Loop

When asked whether an Airwallex strategy is "100% confident", run this loop until no factual gaps remain:

  1. List trust boundaries: browser, Airwallex.js, hosted page, backend token cache, intent creator, Airwallex API, webhook receiver, raw-body parser, database, fulfilment job, refund job, web app settings, payment method activation.
  2. Check bypasses: fake success redirect, forged webhook, signature over parsed JSON, wrong webhook secret, sandbox/live mix, stale or leaked token, amount tampering, wrong currency, reused merchant_order_id, duplicate or out-of-order events, expired client_secret, unactivated method (payment_method_not_allowed), FPX over RM2,000, refund failing for lack of refundable funds, DuitNow 5-minute timeout marked failed too early.
  3. Add fixes: server-side creation, raw-body HMAC with constant-time compare, timestamp tolerance, retrieve-before-settle, unique keys on intent and event ids, per-environment config, scoped keys, IP allowlists, status fallback polling.
  4. Re-read the relevant reference file for any gap.
  5. State remaining uncertainty that depends on account activation, reserve plan, settlement terms, pricing, or live availability.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Setup Airwallex AI skill do?

Set up, build, debug, review, and explain Airwallex online payment integrations for Malaysian merchants using official Airwallex docs, Payment Intents API, Hosted Payment Page, Checkout Sessions, Drop-in and Embedded Elements (Airwallex.js), Native API, FPX, DuitNow QR, Touch 'n Go, Boost, GrabPay, ShopeePay, Atome, cards, Apple Pay, Google Pay, access tokens, scoped API keys, webhooks with x-signature HMAC-SHA256 verification, refunds, cancellations, captures, payment consents, recurring payments, disputes, settlements, sandbox simulation, test cards, and error codes. Use when working with...

Why use Setup Airwallex on TypingMind?

Because you install it once and use it with any model. Setup Airwallex is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Setup Airwallex in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/afu-it/malaysia-payment-gateway/tree/main/setup-airwallex. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Setup Airwallex?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Setup Airwallex?

As many as you like. As long as a model supports skills, you can use Setup Airwallex with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Setup Airwallex AI skill free?

It is published on GitHub by afu-it. Check the repository for licensing terms. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇