# Get set up to take card payments

Create your organization’s payments account with the processor — where card money settles — complete the paperwork through the onboarding link, and re-check the account’s status.

Payments & fulfillment · a play in 3 steps.

## The steps

1. Create the payments account — your organization’s money identity with the processor. — [provisionStripeAccount](/reference/organization-structure/provisionStripeAccount/)
2. Get the onboarding link and complete the paperwork. — [createStripeOnboardingLink](/reference/organization-structure/createStripeOnboardingLink/)
3. Re-check the status — charges enabled, details submitted. — [refreshStripeAccountStatus](/reference/organization-structure/refreshStripeAccountStatus/)

## The calls

Every operation this use case runs, in the order it first appears, with the request and the response its reference page shows.

### provisionStripeAccount

[provisionStripeAccount](/reference/organization-structure/provisionStripeAccount/) — mutation · Create your organization’s Stripe payments account — the money destination for card payments.

**Example request**

```graphql
mutation ExampleProvisionStripeAccount($id: ID!, $revision: ID!, $testProgrammatic: Boolean) {
  provisionStripeAccount(id: $id, revision: $revision, testProgrammatic: $testProgrammatic) {
    id
    sysId
    type
    caption
    status
    parentId
    rootId
    createdAt
    updatedAt
    revisionNum
    revision
    jurisdiction
    code
    legalName
    brandName
    operatingAsName
    owners
    costCentre
    primaryPhysicalFacility
    defaultCurrency
    stripeAccountRef
    stripeChargesEnabled
    stripeDetailsSubmitted
  }
}
```

Variables:

```json
{
  "id": "01900000-0000-7000-8000-37386ae00000",
  "revision": "01900000-0000-7000-8000-b7960e180000",
  "testProgrammatic": true
}
```

Send it with the envelope naming the version: `"extensions": {"at": {"version": {"name":"genesis","number":0}}}`.

**Example response**

```json
{
  "data": {
    "provisionStripeAccount": {
      "id": "01900000-0000-7000-8000-37386ae00000",
      "sysId": "OR-EXMP-0000-000F",
      "type": "Organization",
      "caption": "Blue jeans",
      "status": "<status>",
      "parentId": "01900000-0000-7000-8000-065235280000",
      "rootId": "01900000-0000-7000-8000-a093dd800000",
      "createdAt": "2027-01-31T00:00:00.000Z",
      "updatedAt": "2027-01-31T00:00:00.000Z",
      "revisionNum": 1,
      "revision": "01900000-0000-7000-8000-b7960e180000",
      "jurisdiction": "<jurisdiction>",
      "code": "BJ-001",
      "legalName": "Blue jeans",
      "brandName": "Blue jeans",
      "operatingAsName": "Blue jeans",
      "owners": [
        "01900000-0000-7000-8000-f89daae50000"
      ],
      "costCentre": "<cost centre>",
      "primaryPhysicalFacility": "01900000-0000-7000-8000-925e35910000",
      "defaultCurrency": "<default currency>",
      "stripeAccountRef": "<stripe account ref>",
      "stripeChargesEnabled": true,
      "stripeDetailsSubmitted": true
    }
  },
  "extensions": {
    "at": {
      "callId": "01EXAMPLE-CALL-ID",
      "version": {
        "requested": {
          "name": "genesis",
          "number": 0
        },
        "serviced": {
          "name": "genesis",
          "number": 0
        }
      }
    }
  }
}
```

### createStripeOnboardingLink

[createStripeOnboardingLink](/reference/organization-structure/createStripeOnboardingLink/) — mutation · Get the Stripe onboarding link — where the owner completes the payments-account paperwork.

**Example request**

```graphql
mutation ExampleCreateStripeOnboardingLink($id: ID!) {
  createStripeOnboardingLink(id: $id) {
    url
    expiresAt
  }
}
```

Variables:

```json
{
  "id": "01900000-0000-7000-8000-37386ae00000"
}
```

Send it with the envelope naming the version: `"extensions": {"at": {"version": {"name":"genesis","number":0}}}`.

**Example response**

```json
{
  "data": {
    "createStripeOnboardingLink": {
      "url": "https://example.com/hook",
      "expiresAt": 1
    }
  },
  "extensions": {
    "at": {
      "callId": "01EXAMPLE-CALL-ID",
      "version": {
        "requested": {
          "name": "genesis",
          "number": 0
        },
        "serviced": {
          "name": "genesis",
          "number": 0
        }
      }
    }
  }
}
```

### refreshStripeAccountStatus

[refreshStripeAccountStatus](/reference/organization-structure/refreshStripeAccountStatus/) — mutation · Re-check your Stripe account’s status — charges enabled? details submitted?

**Example request**

```graphql
mutation ExampleRefreshStripeAccountStatus($id: ID!, $revision: ID!, $reason: String) {
  refreshStripeAccountStatus(id: $id, revision: $revision, reason: $reason) {
    id
    sysId
    type
    caption
    status
    parentId
    rootId
    createdAt
    updatedAt
    revisionNum
    revision
    jurisdiction
    code
    legalName
    brandName
    operatingAsName
    owners
    costCentre
    primaryPhysicalFacility
    defaultCurrency
    stripeAccountRef
    stripeChargesEnabled
    stripeDetailsSubmitted
  }
}
```

Variables:

```json
{
  "id": "01900000-0000-7000-8000-37386ae00000",
  "revision": "01900000-0000-7000-8000-b7960e180000",
  "reason": "Correcting a miscount."
}
```

Send it with the envelope naming the version: `"extensions": {"at": {"version": {"name":"genesis","number":0}}}`.

**Example response**

```json
{
  "data": {
    "refreshStripeAccountStatus": {
      "id": "01900000-0000-7000-8000-37386ae00000",
      "sysId": "OR-EXMP-0000-000F",
      "type": "Organization",
      "caption": "Blue jeans",
      "status": "<status>",
      "parentId": "01900000-0000-7000-8000-065235280000",
      "rootId": "01900000-0000-7000-8000-a093dd800000",
      "createdAt": "2027-01-31T00:00:00.000Z",
      "updatedAt": "2027-01-31T00:00:00.000Z",
      "revisionNum": 1,
      "revision": "01900000-0000-7000-8000-b7960e180000",
      "jurisdiction": "<jurisdiction>",
      "code": "BJ-001",
      "legalName": "Blue jeans",
      "brandName": "Blue jeans",
      "operatingAsName": "Blue jeans",
      "owners": [
        "01900000-0000-7000-8000-f89daae50000"
      ],
      "costCentre": "<cost centre>",
      "primaryPhysicalFacility": "01900000-0000-7000-8000-925e35910000",
      "defaultCurrency": "<default currency>",
      "stripeAccountRef": "<stripe account ref>",
      "stripeChargesEnabled": true,
      "stripeDetailsSubmitted": true
    }
  },
  "extensions": {
    "at": {
      "callId": "01EXAMPLE-CALL-ID",
      "version": {
        "requested": {
          "name": "genesis",
          "number": 0
        },
        "serviced": {
          "name": "genesis",
          "number": 0
        }
      }
    }
  }
}
```
