Environments
Use the sandbox environment for all development and testing. Switch to production only when you are ready to go live.1
Get Your Credentials
Before you can make any API calls, you need a Client ID and Client Secret for your Tenant.Send an email to support@diameterpay.com requesting sandbox access. Include:
- Your company name and website
- A brief description of your use case
- The partner bank(s) you intend to use (Portage Bank or Slovak Savings Bank)
client_id and client_secret. Store these values securely — treat them like passwords. Never commit them to source control or expose them in client-side code.2
Obtain an Access Token
Diameter uses the OAuth 2.0 Client Credentials flow. Exchange your A successful response looks like:Copy the
client_id and client_secret for a short-lived Bearer token by posting to the token endpoint. Tokens are valid for 600 seconds (10 minutes).access_token value — you will use it as a Bearer token in every subsequent request.3
Verify Your Tenant
Before building further, confirm your credentials and network connectivity by fetching your Tenant record.The response returns your Tenant’s ID, name, configured Products, and feature flags. If you receive a Note the
200 OK, your credentials are working correctly.products[].id value — you will need it in the next step.4
Create an Individual End User
Onboard your first end user by posting their identity and compliance data. The A The
productId field links the user to the bank product you verified in the previous step.201 Created response returns the new end user record including the Diameter-assigned id and the bank-assigned account details (once bank onboarding processing completes).status moves from pending_bank_onboarding → active asynchronously. Subscribe to webhooks to receive real-time status updates, or poll GET /v1/end-users/individuals/{id} until status is active.5
Initiate a Domestic Wire Payment
Once your end user is Instead of referencing a saved A Track the payment by polling
active and has a funded virtual account, you can initiate a domestic wire. Supply the debtorAccountId (the source account), creditor details, amount, and a unique endToEndId for payment tracking.creditorId, you can also pass inline creditor details:202 Accepted response confirms the payment has been queued for processing:GET /v1/payments/{id} or by listening for payment.completed and payment.failed webhook events.Idempotency
All write requests (
POST, PATCH, PUT) require an x-idempotency-key header. Use a unique value per logical operation — a UUID v4 is a good choice. If you retry a request with the same idempotency key, Diameter returns the original response instead of creating a duplicate record. Idempotency keys are scoped to your Tenant and expire after 24 hours.Next Steps
Authentication
Learn how tokens work, which scopes to request, and how to handle expiry gracefully.
Core Concepts
Deep-dive into Tenants, Products, End Users, Accounts, and the payment lifecycle.
Webhooks
Subscribe to real-time events so you never have to poll for status changes.