0.0.47 • Published 5 months ago

@coherentx/coherent v0.0.47

Weekly downloads
-
License
UNLICENSED
Repository
github
Last release
5 months ago

Coherent API

Installation

Install the API using the following command

npm install coherent

Add --save if building a deployable.

Usage

Import and initialise the connection

import {Coherent} from "coherent";

const coherent = new Coherent({
    environment: "TEST", // or "PRODUCTION"
    token: process.env.COHERENT_TOKEN
})

Payments

Create a Transaction (aka Payment)

Create a payment link, notifying an email or phone number optionally

const transaction = await coherent.transactions.create({
    amount: 1000, // The amount in the smallest regular unit, e.g. pennies (£10 = 1000)
    name: `John Smith`, // The name of the patient,
    note: "A test", //optional, what this transaction involves
    email: "support@coherenthealthcare.com", //optional
    emailNotify: true, //optional, `email` receives payment request notification
    patientNote: "Thanks for your payment", //optional, a note visible to the patient during payment
    phone: "+44...", //optional
    smsNotify: true, //optional, `phone` receives SMS payment request notification
    successUrl: "https://example.com/success", //optional, where to redirect to after successful payment
    failureUrl: "https://example.com/failure", //optional, where to redirect to after rejected payment
})

console.log(transaction.uuid)
console.log(transaction.status)
console.log(transaction.paymentUrl)

Get a payment

const transaction = await coherent.transactions.get(
    transaction.uuid
)

Void a payment

await coherent.transactions.updateStatus(
    transaction.uuid,
    'void'
)

#### Refunds

```js
await coherent.transactions.refund({
    transactionUuid: transaction.uuid,
    amount: 100,
    reason: 'Anything'
})

Terminals

List terminals

await coherent.terminals.list()

Name the terminal

await coherent.terminals.rename({
    terminalId: '<TYPE>-123455678',
    name: 'The Trusty Terminal'
})

Send for payment

await coherent.terminals.setTransaction({
    terminalId: '<TYPE>-123455678',
    transactionUuid: 'abcd-1234'
})

Clear the terminal

await coherent.terminals.clearTransaction({
    terminalId: '<TYPE>-123455678'
})

Transaction Status Webhooks

See Transaction Status Webhooks in the main documentation

Recurring Payments and Holds (aka Payment Plans)

Create a Payment Plan, currently limited to monthly recurring payments, or payment holds for charging on demand

const plan = await coherent.paymentPlans.create({
    amount: 1000, // The amount in the smallest regular unit, e.g. pennies (£10 = 1000)
    name: `John Smith`, // The name of the patient,
    note: "A test", //optional, what this transaction involves
    startDate: new Date("2025-01-01"), //required except if creating an on_demand plan
    endDate: new Date("2025-03-01"), //optional, the date of the last payment occurrence
    transactionReference: "Invoice123456", //optional, but recommended, and unique per clinic. Transactions relating to this payment plan will have this set
    email: "support@coherenthealthcare.com", //optional
    phone: "+44...", //optional
    type: "recurring", //optional, defaults to recurring, can be on_demand
    method: "direct_debit", //optional, defaults to direct_debit, can be card
    successUrl: "https://app.coherenthealthcare.com/receipt?token=example", //optional, where the user is sent after successful payment. NOTE: only supported for type = card
})

console.log(plan.uuid)
console.log(plan.status)
console.log(plan.paymentUrl)

Get a payment plan

const plan = await coherent.paymentPlans.get(
    plan.uuid
)

Pause or cancel a payment plan

await coherent.paymentPlans.setStatus(
    plan.uuid,
    PaymentPlanStatus.Void 
    // OR PaymentPlanStatus.Paused
    // OR PaymentPlanStatus.Resumed
)

You can set the second parameter to one of:

  • Void: Cancels the payment plan and associated schedule
  • Paused: Pauses the payment plan's schedule, scheduled occurences that fall when the plan is paused are skipped forever
  • Resumed: Resumes the payment plan's schedule, restoring it to the state it was in before it became paused or errored.

Resend a notification

await coherent.paymentPlans.notify(
    plan.uuid
)

Execute an on-demand payment plan

await coherent.paymentPlans.execute(
    plan.uuid
)

Link Payment Plan to Transactions

Each recurrence of a payment plan will create a Transaction, and in turn trigger a Transaction webhook as usual.

To link transactions generated to payment plans, set the transactionReference on payment plan creation.

You will not have a record of the transaction with the given UUID when the webhook is received, but when you get the transaction, it should contain the reference set earlier at {}.paymentPlan.transactionReference.

0.0.40

6 months ago

0.0.41

6 months ago

0.0.42

6 months ago

0.0.43

6 months ago

0.0.44

6 months ago

0.0.45

5 months ago

0.0.46

5 months ago

0.0.47

5 months ago

0.0.37

7 months ago

0.0.38

6 months ago

0.0.39

6 months ago

0.0.30

9 months ago

0.0.31

8 months ago

0.0.32

8 months ago

0.0.33

7 months ago

0.0.34

7 months ago

0.0.35

7 months ago

0.0.36

7 months ago

0.0.26

11 months ago

0.0.27

11 months ago

0.0.28

9 months ago

0.0.29

9 months ago

0.0.20

12 months ago

0.0.21

12 months ago

0.0.22

12 months ago

0.0.23

11 months ago

0.0.24

11 months ago

0.0.25

11 months ago

0.0.18

1 year ago

0.0.19

1 year ago

0.0.15

1 year ago

0.0.16

1 year ago

0.0.17

1 year ago

0.0.14

1 year ago

0.0.13

1 year ago

0.0.12

1 year ago

0.0.11

1 year ago

0.0.10

1 year ago

0.0.9

1 year ago

0.0.8

1 year ago

0.0.7

1 year ago

0.0.6

1 year ago

0.0.5

1 year ago

0.0.4

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago