Skip to main content
A GitHub Actions job can get an OIDC token from GitHub for each run. Dodo Payments trusts this token through a github_actions provider.

Provider Settings

Required Claims

The mapping must pin repository_owner_id or repository_id with an exact numeric value. A repository name can pass to a new owner after a delete, but a numeric id cannot. The dashboard can find the repository_id from the repository name. Add other conditions to limit the trust, for example:
Useful claims are repository, repository_owner, ref, ref_type, environment, event_name, workflow_ref, job_workflow_ref, and sub, for example repo:acme/billing:environment:production.
Dodo Payments refuses JWTs from the pull_request_target and workflow_run events, with the event_not_allowed reason. A run of these events can execute code from a fork with the identity of the base repository.

Workflow

Give the job the id-token: write permission. The SDK uses ACTIONS_ID_TOKEN_REQUEST_URL and ACTIONS_ID_TOKEN_REQUEST_TOKEN, which GitHub sets when the job has this permission.
To get the JWT without an SDK, request it with the Dodo Payments audience:
Then send it to the exchange endpoint. Refer to Raw HTTP Exchange.

SDK Usage

The helper requests a new JWT for each exchange, thus a long job can refresh its Dodo token. Refer to SDK Usage for the other languages.
Last modified on October 28, 2026